Сортировка словаря 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.