Проблема
Мне трудно понять, как вернуть вложенный список из рекурсивной функции. У меня есть вложенная структура, из которой я хочу вернуть элементы с каждого уровня.
Input
У меня есть структура, подобная следующей, где я, однако, не знаю глубины.
# Data
my_input = {'a': {'d':None, 'e':None, 'f':{'g':None}}, 'b':None, 'c':None}
Вывод
Мне нужны все возможные уровни вывода в список списков
# Desired output
[['a'], ['b'], ['c'], ['a', 'd'], ['a', 'e'], ['a', 'f'], ['a', 'f', 'g']]
Что я пробовал
Эта функция не работает навсе. Кажется, я не могу понять, как вернуться из рекурсивной функции. Всякий раз, когда я запускаю функцию, я либо перезаписываю вывод, либо не получаю правильную информацию из предыдущей итерации. Любые предложения о том, как правильно написать эту функцию?
def output_levels(dictionary, output=None):
print(dictionary)
if not output:
output = []
if len(dictionary.keys()) == 1:
return output.append(dictionary.keys())
for key in dictionary.keys():
if not dictionary[key]:
output.append(key)
continue
output.append(output_levels(dictionary[key], output.append(key)))
return output