給出每個子列表標識分支的節點列表列表。 目標是編寫一個python程序來從這些分支重建樹。 「分支」是指從樹根開始到葉子結束的列表。假設主列表中有這種形式:從分支列表中重構樹
branches = [b_1 , b_2 , b_3 , ... , b_n]
這裏多家分支機構等於葉n
的數量。每個分支包含一個節點列表,以便從樹的根到葉:
b_i = [root,n_1,n_2,n_3,...,leaf_i]
的目標是將所有列表合併成捕獲樹的結構的字典。每個節點應該有兩個鍵值對:名稱和子級。 name的值是節點的名稱,而children的值是節點的列表(再次包含名稱和子元素的字典)。 沒有這種特殊的結構,這個問題是非常相似的How to turn a list into nested dict in Python
例如,如果列表是:
branches=[[root,n1,l1],[root,n1,l2],[root,n2,l3],[root,n2,l4]]
我們正在尋找這樣一個字典:
treeDict = {'name':root,'children':
[
{'name':n1,'children':[
{'name':l1,'children':[]},
{'name':l2,'children':[]}]},
{'name':n2,'children':[
{'name':l3,'children':[]},
{'name':l4,'children':[]}]}
]
}
表示這樹:
root
/ \
n1 n2
/\ /\
l1 l2 l3 l4
你一直想這麼遠嗎? – 2014-11-05 05:43:34
@KlausD。如果我忘記了'child'列表和'name'鍵,這幾乎是相同的:http://stackoverflow.com/questions/7653726/how-to-turn-a-list-into-nested-dict- in-python – MostafaMV 2014-11-05 05:50:49