Узнать уровень вложенности словаря

Для того, чтобы узнать максимальный уровень вложенности произвольного словаря, можно использовать простую рекурсивную функцию:

def depth(source_dict: dict) -> int:
    if not (isinstance(source_dict, dict)):   # проверка типа, т.к. среди вложенных значений не обязательно будут dict
	    return 0  # если это не словарь, то возвращаем 0 (в логич. выражениях это даст False)
    return 1 + (max(map(depth, d.values())) if d else 0)  # проверяем рекурсивно 

То есть мы применяем рекурсивно функцию depth к каждому значению в словаре и берём максимальное значение из списка, который составляется из не нулевых элементов, то есть элементов, имеющих вложенность.

Условие if d else 0 позволяет избежать ValueError в случае, когда d будет являться пустым словарём max({ }), т.к. при этом получим ValueError: max() arg is an empty sequence.

0

Автор публикации

не в сети 1 месяц

art610

1000K
Lnovus Support
Комментарии: 0Публикации: 41Регистрация: 04-06-2022
Источник
Оцените материал
( 1 оценка, среднее 5 из 5 )
Locus Novus
Добавить комментарий

Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
Генерация пароля