2016-12-25 70 views
0

我在python中嵌套了一個字典 - {a:{d:{v:2,c:3}}} 我想編寫一個函數, - 像 '一' 並返回一個字典: {d:{v:2,C:3}} 只是內部在Python中刪除嵌套字典鍵的外部

我嘗試使用:

def findkeys(node, kv): 
    if isinstance(node, list): 
     for i in node: 
      for x in findkeys(i, kv): 
       yield x 
    elif isinstance(node, dict): 
     if kv in node: 
      yield node[kv] 
     for j in node.values(): 
      for x in findkeys(j, kv): 
       yield x 

但它返回它作爲一個列表,而不是一本字典,所以它只有一個項目在列表[{d:{v:2, c:3}}],所以我不能得到訪問後,它的鍵'c'例如

我的字典preasent一棵樹,我想去thruogh它,直到我會得到一片葉子。

有人有想法嗎?

+4

正如您所描述的那樣,你'outerdict [ '一']'會給你內在的字典 – pvg

+0

你也可以做在調用你的函數後列出[0],儘管這看起來像是一個不必要的步驟。 –

回答

1
def get_val(dct,key): 
    for k, v in dct.iteritems(): 
     if key in dct.keys(): 
      print dct[key] 
     else : 
      for d in dct.values(): 
       get_val(d, key) 

dct = {'a': {'d':{'v':2, 'c':3}}} 
key='a' 
get_val(dct,key) 

如果key='a',輸出= {'d':{'v':2, 'c':3}} 如果key='d',輸出= {'c': 3, 'v': 2}