Форум сайта python.su
Доброго времени суток!
Пользуюсь Python 3
имеется следующий список:
config = [ {'name': 'Paris', 'date': '02.06.2020'}, {'name': 'London', 'date': '20.06.2020'}, {'name': 'Paris', 'date': '05.08.2019'}, {'name': 'Paris', 'date': '09.06.2021'}, {'name': 'New York', 'date': '03.01.2021'}, {'name': 'Barcelona', 'date': '16.11.2021'}, {'name': 'Paris', 'date': '28.04.2019'} ]
def sorting(self, meta): temp = sorted(meta, key=lambda k: k['date'].split('.')[2]) temp = sorted(temp, key=lambda k: k['date'].split('.')[1]) return sorted(temp, key=lambda k: k['date'].split('.')[0])
Офлайн
def sorting(meta): return sorted(meta, key=lambda k: '.'.join(reversed(k['date'].split('.'))))
Офлайн
ramiСпасибо огромное!
Офлайн
Для правильной сортировки формат даты должен быть “YYYY.MM.DD”, для этого даты в вашем формате “02.06.2020” нужно разбить по разделителю, “развернуть” и снова “склеить”.
Офлайн
>>> config = [ ... {'name': 'Paris', 'date': '02.06.2020'}, ... {'name': 'London', 'date': '20.06.2020'}, ... {'name': 'Paris', 'date': '05.08.2019'}, ... {'name': 'Paris', 'date': '09.06.2021'}, ... {'name': 'New York', 'date': '03.01.2021'}, ... {'name': 'Barcelona', 'date': '16.11.2021'}, ... {'name': 'Paris', 'date': '28.04.2019'} ... ] >>> >>> out = sorted(config, key=lambda i: tuple(map(int, i['date'].split('.')))[::-1]) >>> out [{'name': 'Paris', 'date': '28.04.2019'}, {'name': 'Paris', 'date': '05.08.2019'}, {'name': 'Paris', 'date': '02.06.2020'}, {'name': 'London', 'date': '20.06.2020'}, {'name': 'New York', 'date': '03.01.2021'}, {'name': 'Paris', 'date': '09.06.2021'}, {'name': 'Barcelona', 'date': '16.11.2021'}] >>>
>>> '01.01.20' > '01.01.100' True >>>
Отредактировано py.user.next (Фев. 13, 2021 23:44:58)
Офлайн
> “развернуть” и снова “склеить”
Склеивать зачем? Списки вполне себе можно сравнивать.
Офлайн