2015-06-23 3 views
-3
input_dictionary= {'A': [{'B1': [{'C1': ['D2']}, {'C2': ['D3']}]}, {'B2': [{'C1': ['D2']}, {'C2': ['D3']}]}]} 

Выход:Как преобразовать словарь python в отношение родитель-ребенок?

['A','A_B1','A_B2','A_B1_C1','A_B1,C2',.....so on] 

Таким образом, общий формат parent_child_subchild и так далее. Любые рекомендации/рекомендации будут оценены.

+0

Подсказка: попробуйте посмотреть на 'for' цикла [здесь] (https://docs.python.org/2/tutorial/controlflow.html#for-statements) – huapito

+0

@huapito Нет на самом деле я хочу рекурсивный подход. Я попробовал подход DFS и смог пересечь все узлы, но я не могу понять, как печатать выходные данные в формате: parent_child_subchild – Dexter

ответ

0
>>> def stringify(d, prefix=[]): 
...  try: 
...  for k,l in d.items(): 
...   return ['_'.join(prefix+[k])]+[f for e in l for f in stringify(e,prefix+[k])] 
...  except AttributeError: 
...   return ['_'.join(prefix+[d])] 
... 
>>> stringify(input_dictionary) 
['A', 'A_B1', 'A_B1_C1', 'A_B1_C1_D2', 'A_B1_C2', 'A_B1_C2_D3', 'A_B2', 'A_B2_C1', 'A_B2_C1_D2', 'A_B2_C2', 'A_B2_C2_D3'] 
+0

Awesome! Работал как шарм. – Dexter

Смежные вопросы