2016-12-25 43 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}