在python

时间:2015-08-29 21:25:36

标签: python list sorting

我有一个这样的清单:

['25/May/2015', '27/May/2015', '27/Apr/2015', '27/Jan/2015', '07/May/2015' '22/May/2015', '16/Jan/2015', '29/Jan/2015', '28/Feb/2015', '18/Feb/2015', '08/May/2015', '20/Jan/2015', '24/Jan/2015', '31/Mar/2015', '30/Apr/2015', '17/Feb/2015', '19/Mar/2015', '05/May/2015', '22/Jan/2015', '14/Aug/2015', '26/Feb/2015', '14/Mar/2015', '28/May/2015']']

我想按月订购日期:jan,feb,march等... 而且我想在白天订购它们,这意味着第一天必须是:1 / jan / 2015然后2 / jan / 2015

我试图对列表进行排序:

days.sort()

但它按天而不是按月订购列表。

任何人都会非常感激

2 个答案:

答案 0 :(得分:1)

使用密钥尝试sorted

from datetime import datetime
days_sorted = sorted(days, key=lambda day: datetime.strptime(day, "%d/%b/%Y"))

答案 1 :(得分:0)

您将要使用自己的比较功能对日期进行排序。 sort允许这样做,您只需要说list.sort(key=comparison_function)即可。为了比较列表中的月份,我想出了一个简单的想法

months = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nov":10, "Dec":11 }

制作一个dict,将每个月变为相应的数字

def month_value(date):
    return months[date.split('/')[1]]

编写一个函数,它接受一个字符串并返回它的第二个组件的值。

dates.sort(key=month_value)

这将根据他们的月份对日期进行排序。