Python 日期字符串的排序列表
我有一个任意的日期字符串列表(mm yyyy),如下所示:Python 日期字符串的排序列表,python,datetime,Python,Datetime,我有一个任意的日期字符串列表(mm yyyy),如下所示: d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007'...] 我需要先按年份(升序)对列表进行排序,然后按月份(升序)对列表进行排序,这样逻辑顺序可以是: d_ordered = ['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013
d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007'...]
我需要先按年份(升序)对列表进行排序,然后按月份(升序)对列表进行排序,这样逻辑顺序可以是:
d_ordered = ['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013' ...]
如何实现这一点?使用钥匙:
>>> 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']
最好在这里使用函数而不是lambda,以防止调用split()
两次(而且看起来更整洁:)
请注意,这将返回已排序的列表。如果要就地排序,请使用.sort()
:
试试这个:
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'))
快速脏:
d.sort(key=lambda x:x.split('-')[:-1])
使用reverse=True进行降序排序sorted(d,key=lambda x:datetime.datetime.strtime(x,%m-%Y'),reverse=True)
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'))