2013-03-16 117 views
4

創建樹狀結構的名單我有一個嵌套列表:從嵌套列表

l = [[1], [2,3], [2,4], [2,5], [2,5,6], [2,5,7], [2,5,8],[2,5,8,9], [10],[11,12]] 

,我需要清單,並在結構嵌套列表中的樹,例如:

l = [{1:[], 2:[3,4,{5: [6,7, {8: [9]}]}], 10: [], 11: [12]}] 

我已經通過post生成一個我需要的類似的樹,但是它與嵌套列表的對稱集一起工作。我嘗試使用列表項的groupby功能,但無法生成所需格式的列表。我猜想Python中有一些東西可以輕鬆地完成它,目前我正在失蹤。一些指針將不勝感激。

+0

能否請您解釋一下什麼嵌套的名單是什麼? – Chandan 2013-03-16 11:46:22

+0

嵌套列表和嵌套字典的規則是什麼? – HYRY 2013-03-16 12:06:24

+0

@HYRY列表中的下一項是列表中上一項的子項。所以在[2,5,6]中,5是2的孩子,6是5的孩子。基本上我必須將元素分組以形成像結構即父母子關係的樹。 – Rahul 2013-03-16 12:12:50

回答

4

如果你可以使用字典只:

l = [[1], [2,3], [2,4], [2,5], [2,5,6], [2,5,7], [2,5,8],[2,5,8,9], [10],[11,12]] 
root = {} 
for path in l: 
    parent = root 
    for n in path: 
     parent = parent.setdefault(n, {}) 
import pprint 
pprint.pprint(root, width=1) 

輸出:

{1: {}, 
2: {3: {}, 
    4: {}, 
    5: {6: {}, 
     7: {}, 
     8: {9: {}}}}, 
10: {}, 
11: {12: {}}}