2017-06-07 165 views
2

什麼是獲取值的字典裏子鍵的優雅的方式,但前提是按鍵的兩個層面存在使用Python?獲得價值

例如,我想從'爸爸'中獲得'團隊'的價值。所以,如果爸爸不存在,它應該不返回任何內容,否則繼續尋找子項'團隊',如果不存在則返回none,否則返回值。

會不會有到可能寫一個遞歸函數,我只是通過名字,它然後查找通過數組一個簡單的方法,如果它擊中缺少關鍵的,它只是返回一個定義的默認值。

我知道我目前能做的

我希望能夠做這樣的事

dict.get(['dad','team'], None) 

字典

{ 
    "dad":{ 
     "team":"packers" 
    }, 
    "mom":{ 
     "show":"rugrats", 
     "vehicle":"buggy" 
    } 
} 

回答

5
dict.get('dad', {}).get('team', None) 

這不正是兩個級別。在一般情況下,你可以

def recurGet(d, ks): 
    head, *tail = ks 
    return recurGet(d.get(head, {}), tail) if tail else d.get(head) 

head, *tail = ks是Python 3的在Python 2,你就必須把它明確地寫爲

head = ks[0] 
    tail = ks[1:] 
+0

打我吧! +1希望這對OP來說很明顯,但可能會有一點解釋。 – erip