我有一个任意的日期字符串列表(mm-yyyy)如下:
d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007'...]
Run Code Online (Sandbox Code Playgroud)
我需要先将这个列表按年级(升序)排序,然后按月(升序)等级排序.这样逻辑排序可以是:
d_ordered = ['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013' ...]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
ama*_*nes 46
试试这个:
import datetime
d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007']
sorted(d, key=lambda x: datetime.datetime.strptime(x, '%m-%Y'))
Run Code Online (Sandbox Code Playgroud)
使用sorted()
密钥:
>>> d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007']
>>> def sorting(L):
... splitup = L.split('-')
... return splitup[1], splitup[0]
...
>>> sorted(d, key=sorting)
['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013']
Run Code Online (Sandbox Code Playgroud)
最好在这里使用一个函数而不是lambda来防止调用split()
两次(它看起来有点整洁:))
请注意,这将返回已排序的列表.如果要对其进行排序,请使用.sort()
:
>>> d.sort(key=sorting)
>>> d
['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36209 次 |
最近记录: |