Поиск списка в словаре словарей
Есть словарь словарей с неизвестной вложенностью. Необходимо пройтись по всем словарям, найти где "спрятан" первый список и вытащить его для дальнейшей обработки. Как пример, есть словарь:
d = {'a': 1, 'b': 1, 'c': {'d': 1, 'e': {'f': {'c': 5, 'h': 5, 'k': 5}, 'd': 4, 'g': {'h': 1, 'f': 4, 'i': {'j': 1, 'k': [1,2,3,4,5], 'l': 7, 'm': {'n': 1, 'o': 1, 'p': [6,7,8]}}}}}}
Мне надо из этого словаря получить список [1,2,3,4,5]
.
Пытаюсь решить рекурсией, но не могу присвоить переменной необходимый мне список. Рекурсия не обязательна — просто не придумал как решать по-другому.
d = {'a': 1, 'b': 1, 'c': {'d': 1, 'e': {'f': {'c': 5, 'h': 5, 'k': 5}, 'd': 4, 'g': {'h': 1, 'f': 4, 'i': {'j': 1, 'k': [1,2,3,4,5], 'l': 7, 'm': {'n': 1, 'o': 1, 'p': [6,7,8]}}}}}}
def find_list(d: dict) -> list:
for value in d.values():
if isinstance(value, list):
print('Нашел список:', value)
return value
if isinstance(value, dict):
print('Здесь словарь:', value)
find_list(value)
res = find_list(d)
print(res)
Здесь в переменной res
хотел бы получить свой список [1,2,3,4,5]
, но получаю None
. Print
'ы просто для наглядности что выводит функция.
Источник: Stack Overflow на русском