Сортировать словарь, значение которого находится в виде списка словаря - PullRequest
0 голосов
/ 19 марта 2020

Сортировка словаря, значение которого находится в виде списка словаря.

У меня есть что-то вроде:

myDict = {'First' :[{'Name':'Raj','Date':'28-March-2019 09:30'}], 
          'Second':[{'Name':'Ajay','Date':'12-April-2020 07:25'}], 
          'Third':[{'Name':'Jaya','Date':'12-April-2019 09:25'}]}

Я хочу отсортировать это в порядке возрастания на основе даты.

Ожидаемый результат:

myDict = {'First' :[{'Name':'Raj','Date':'28-March-2019 09:30'}], 
          'Third' :[{'Name':'Jaya','Date':'12-April-2019 09:25'}],
          'Second':[{'Name':'Ajay','Date':'12-April-2020 07:25'}]}

Я хочу вывод в виде словаря

1 Ответ

1 голос
/ 19 марта 2020

вы можете использовать collections.OrderedDict со встроенной функцией sorted:

from collections import OrderedDict
from datetime import datetime

OrderedDict(sorted(myDict.items(), key=lambda x: datetime.strptime(x[1][0]['Date'], '%d-%B-%Y %H:%M')))

. В этом решении предполагается, что каждое значение из myDict представляет собой список с одним внутрикадровым указанием, который имеет действительный * Клавиша 1007 * (как показывают предоставленные вами данные)

в python2 .7 порядок вставки словаря не гарантирован, поэтому вы не можете получить желаемый результат, но вы можете использовать OrderedDict

вывод:

OrderedDict([('First', [{'Name': 'Raj', 'Date': '28-March-2019 09:30'}]),
             ('Third', [{'Name': 'Jaya', 'Date': '12-April-2019 09:25'}]),
             ('Second', [{'Name': 'Ajay', 'Date': '12-April-2020 07:25'}])])

Вы можете узнать больше о OrderedDict здесь

Я рекомендую вам использовать python3 .6 или более поздняя версия, где вы можете воспользоваться порядком вставки в dict

...