Я пытаюсь извлечь один уровень из вложенного словаря. Так, например, учитывая приведенный ниже словарь, я ожидал бы увидеть следующие результаты для первого и второго уровня.
nested_dict = {
'foo':'bar',
'baz':{
'foo':'baz'
}}
# level 0
{'foo':'bar'}
# level 1
{'foo':'baz'}
Я могу получить первый уровень, используя dict
понимание:
{k:v for (k,v) in nested_dict.items() if type(v) is not dict}
>>> {'foo':'bar'}
Или получить указанный уровень с помощью рекурсии:
def get_level(nested_dict, level):
if level == 0:
return {k:v for (k,v) in nested_dict.items() if type(v) is not dict}
else:
this_level = {}
for (k,v) in nested_dict.items():
if type(v) is dict:
this_level.update(v)
return get_level(this_level, level - 1)
get_level(nested_dict, 1)
>>> {'foo':'baz'}
Теперь мне интересно, есть ли более Pythonic / clean / нестандартный способ получения уровней вложенных словарей (как Я уже делал выше), при необходимости с помощью пакета.