Сортировка словаря Python на основе значений вложенных словарей
Как вы сортируете словарь Python на основе внутреннего значения вложенного словаря?
Например, выполните сортировку mydict
ниже в зависимости от значения context
:
mydict = {
'age': {'context': 2},
'address': {'context': 4},
'name': {'context': 1}
}
Результат должен быть таким:
{
'name': {'context': 1},
'age': {'context': 2},
'address': {'context': 4}
}
Ответы
Ответ 1
>>> from collections import OrderedDict
>>> mydict = {
'age': {'context': 2},
'address': {'context': 4},
'name': {'context': 1}
}
>>> OrderedDict(sorted(mydict.iteritems(), key=lambda x: x[1]['context']))
OrderedDict([('name', {'context': 1}), ('age', {'context': 2}), ('address', {'context': 4})])
Ответ 2
Вы не можете сортировать словарь независимо от того, насколько сильно вы пытаетесь, потому что это неупорядоченная коллекция. Вместо этого используйте модуль OrderedDict
form collections
.