Сортировка словаря в словаре

День добрый! Есть словарь такого типа:

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}}
→ Ссылка