2013-12-19 47 views
1

所以我們可以說我有這樣形式的字典:一行中的任意深度字典查找?蟒蛇

d = {'a':{'b':{'c':1,'d':2},'e':1}} 

,我想從這個字典,在列表中如自定義鍵獲取一個元素:

l = ['a','e'] 

l = ['a','b','c'] 

我可以這樣做:

def getVal(d,keys): 
    if keys==[]: 
     return d 
    else: 
     nextD = d[keys.pop(0)] 
     return getVal(nextD,keys) 

但我不知道是否有一個更wizardy蟒蛇的方式去做

+0

同意。我沒有看到這個問題。我現在將其標記爲已回答嗎? Martijn - 你想發表你的評論作爲答案嗎? –

+0

不,我投票結束而不是重複;不需要標記任何回答。 –

回答

0

據馬亭的鏈接(沿VAL = d [* 1] ???東西線)評論,這個問題的答案將是:

def getVal(d,keys): 
    return reduce(dict.__getitem__, keys, d) 
+3

這就是爲什麼我們選擇關閉而不是重複。 –

+0

@MartijnPieters同意。順便提一下,我很好奇你是Python的貢獻者嗎? – Skyler

+0

我偶爾做出貢獻,我不是核心開發者。 –