2016-12-25 5 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 

しかし、それはそれを返しリストではなく、辞書ではないので、リストには1つのアイテムしかありません[{d:{v:2, c:3}}]だから、それを後でアクセスして 'c'キーにアクセスすることはできません。たとえば

私の辞書は木の前にあり、私は葉に達するまでそれをthruoghに行きたい。

誰かがアイデアを持っていますか?

+4

説明してきたように、あなたは 'outerdict [ 'A']'あなたがも行うことができます – 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}

関連する問題