[{'date': '2010-04-01', 'people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277}]
假设我有这个清单。如何按“日期”排序,这是字典中的项目。但是,“日期”是一个字符串......
答案 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('-'))