Как я сортирую этот список в Python, если моя дата находится в Строке?

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

Предположим, что у меня есть этот список. Как я сортирую по "дате", которая является объектом в словаре. Но, "дата" является строкой...

13
задан TIMEX 7 April 2010 в 01:36
поделиться

5 ответов

.sort(key=lambda x: datetime.datetime.strptime(x['date'], '%Y-%m-%d'))
32
ответ дан 1 December 2019 в 17:15
поделиться

К счастью, даты в формате ISO, которые, кажется, имеют здесь, отлично сортируются как строки ! Так что вам не нужно ничего особенного:

import operator
yourlistofdicts.sort(key=operator.itemgetter('date'))
23
ответ дан 1 December 2019 в 17:15
поделиться
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('-'))
2
ответ дан 1 December 2019 в 17:15
поделиться

Решение Satoru.Logic чистое и простое. Но, согласно сообщению Алекса, вам не нужно манипулировать строкой даты, чтобы получить правильный порядок сортировки ... поэтому потеряйте .split ('-')

Этого кода будет достаточно:

records.sort(key=lambda x:x['date'])
12
ответ дан 1 December 2019 в 17:15
поделиться

В 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}]
3
ответ дан 1 December 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: