[{'date': '2010-04-01', 'people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277}]
Предположим, что у меня есть этот список. Как я сортирую по "дате", которая является объектом в словаре. Но, "дата" является строкой...
.sort(key=lambda x: datetime.datetime.strptime(x['date'], '%Y-%m-%d'))
К счастью, даты в формате ISO, которые, кажется, имеют здесь, отлично сортируются как строки ! Так что вам не нужно ничего особенного:
import operator
yourlistofdicts.sort(key=operator.itemgetter('date'))
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('-'))
Решение Satoru.Logic чистое и простое. Но, согласно сообщению Алекса, вам не нужно манипулировать строкой даты, чтобы получить правильный порядок сортировки ... поэтому потеряйте .split ('-')
Этого кода будет достаточно:
records.sort(key=lambda x:x['date'])
В python 2.6 вы можете использовать soerted w / operator.itemgetter. Поскольку дата - ГГГГ-ММ-ДД, она сортируется, даже если ее строка приводит к тому, что от наибольшего к наименьшему - я использую этот формат все время по этой причине
>>> 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}]