我有一個嵌套的dict
它看起來像這樣:遞歸在字典
有關鍵children
內的多個嵌套。無論何時出現密鑰children
,我都希望捕獲密鑰branch
。因爲有多個children
,我想爲每個孩子做這個。當然,每個孩子也可以有更多的children
。這個嵌套可以達到7層。
爲了達到這個目的,我可以寫一個骨頭的7-for循環方法或使用遞歸。所以我給了遞歸了一槍,用下面的代碼上來:
def GatherConcepts(header):
if 'children' in header.keys():
if len(header['children']) > 0:
if 'branch' in header.keys():
concepts.append(header['handle'])
if 'children' in header.keys():
for j in range(0, len(header['children'])):
GatherConcepts(header['children'][j])
else:
for i in range(0,len(header['children'])):
GatherConcepts(header['children'][i])
這段代碼的問題是,它給我的只有2級(因爲我調用該函數本身的2倍,因此不使用遞歸正確),而不是7.
我該如何改進以獲得所有級別?
任何指針將不勝感激。
你能展示一個輸入的例子(提供的例子)和你期望的輸出嗎? –
它看起來像頂級詞典有'孩子',但沒有'分支'(除非我正在讀取輸出不正確)...... – mgilson
另外,FWIW,'some_dict.keys()'中的鍵將效率較低(顯着在python2.x上)比some_dict中的key更重要。 – mgilson