2014-09-29 21 views
0

我使用這個gist's defaultdict單行樹。使用defaultdict的Python單行樹。如何減少所需參數的數量?

def tree(): return defaultdict(tree) 

當前,您必須爲每個要添加的節點提供單獨的[]

即:

users = tree() 
users['harold']['username']['hrldcpr'] 
users['handler']['username']['matthandlersux'] 

我的問題是,我如何能夠壓平輸入,這樣我可以提供一個列表來達到同樣的效果?

即:

users = tree() 
users['harold', 'username', 'hrldcpr'] 
users['handler', 'username', 'matthandlersux'] 

感謝您的幫助!

+0

由於樹是一個字典,可以試試這個:http://stackoverflow.com/questions/15077973/how-can-i-access-a-deeply -nested-dictionary-using-tuples – fredtantini 2014-09-29 11:08:25

+0

這絕對是我想要的功能,我會看看這個。謝謝! – JmsBtlr111 2014-09-29 11:13:24

+0

您可以創建一個類並實現自己的'__getitem__'和'__setitem__',但這超出了一個合理的SO問題的範圍。 – jonrsharpe 2014-09-29 11:14:30

回答

2

通過提供listtree作爲參數,您可以簡單地定義一個函數,如insert來創建該節點。

def insert(tree, List): 
    for node in List: 
     tree = tree[node] 

users = tree() 
insert(users, ['harold', 'username', 'hrldcpr']) 

將創建一個結構{'harold' : {'username' : {'hrldcp' : {} } } }

+0

謝謝@ nu11p01n73R,這是一個簡單的答案 – JmsBtlr111 2014-09-29 12:19:02

相關問題