排序日期字符串列表

时间:2013-07-13 06:13:16

标签: 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' ...]

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:43)

试试这个:

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'))

答案 1 :(得分:7)

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']

最好在这里使用一个函数而不是lambda来防止调用split()两次(它看起来有点整洁:))

请注意,这将返回已排序的列表。如果要对其进行排序,请使用.sort()

>>> d.sort(key=sorting)
>>> d
['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013']