Сортировка словаря в словаре
День добрый! Есть словарь такого типа:
example = {
'f': {
'ds': 5,
'nb': 8,
},
'a': {
'sd': -5,
'vx': 0,
'mhj': 455,
},
'n': {
'we': 12,
'mf': 9,
'jk': 2,
}
}
Как наиболее быстро и эффективно отсортировать его в лексикографическом порядке(как по внешним, так и по внутренним ключам)? Иными словами, чтобы он превратился вот в такой:
example = {
'a': {
'mhj': 455,
'sd': -5,
'vx': 0,
},
'f': {
'ds': 5,
'nb': 8
},
'n': {
'jk': 2,
'mf': 9,
'we': 12,
}
}
Для сортировки внешних ключей использую данную конструкцию:
example = dict(sorted((example.items()), key = lambda elem: elem[0]))
А вот как одновременно отсортировать ещё и внутренние, я не понимаю
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Используйте, например, рекурсию. Так можно сортировать словари любой вложенности.
def dsort(d):
for k, v in d.items():
if isinstance(v, dict):
d[k] = dsort(v)
return dict(sorted(d.items()))
print(dsort(example))
{'a': {'mhj': 455, 'sd': -5, 'vx': 0}, 'f': {'ds': 5, 'nb': 8}, 'n': {'jk': 2, 'mf': 9, 'we': 12}}