如果我的日期是字符串,我如何在Python中对此列表进行排序?

时间:2010-04-07 01:36:28

标签: python list dictionary

[{'date': '2010-04-01', 'people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277}]

假设我有这个清单。如何按“日期”排序,这是字典中的项目。但是,“日期”是一个字符串......

5 个答案:

答案 0 :(得分:32)

.sort(key=lambda x: datetime.datetime.strptime(x['date'], '%Y-%m-%d'))

答案 1 :(得分:22)

幸运的是,ISO格式的日期,似乎就像你在这里一样,非常好地排序作为字符串!所以你不需要花哨的东西:

import operator
yourlistofdicts.sort(key=operator.itemgetter('date'))

答案 2 :(得分:12)

Satoru.Logic的解决方案简洁明了。但是,根据Alex的帖子,您不需要操纵日期字符串来使排序顺序正确...所以失去.split('-')

此代码就足够了:

records.sort(key=lambda x:x['date'])

答案 3 :(得分:3)

在python 2.6中,你可以使用soerted w / operator.itemgetter。 由于日期是YYYY-MM-DD,即使它的字符串因其最大也是最小而被排序 - 因此我一直使用该格式

>>> import operator
>>> l = [{'date': '2010-04-01','people': 1047, 'hits': 4522}, 
         {'date': '2010-04-03', 'people': 617, 'hits': 2582}, 
         {'date': '2010-04-02', 'people': 736, 'hits': 3277}]
>>> sorted( l, key = operator.itemgetter('date') )
[{'date': '2010-04-01', 'hits': 4522, 'people': 1047}, {'date': '2010-04-02', 'hits': 3277, 'people': 736}, {'date': '2010-04-03', 'hits': 2582, 'people': 617}]

答案 4 :(得分:2)

records = [
     {'date': '2010-04-01', 'people': 1047, 'hits': 4522}, 
     {'date': '2010-04-03', 'people': 617, 'hits': 2582}, 
     {'date': '2010-04-02', 'people': 736, 'hits': 3277}
     ]
records.sort(key=lambda x: x['date'].split('-'))