2016-11-29 18 views
-2

私は関数の作業を開始する前に不思議です。私はいつもピジョンソニックの解決策を聞きたい。ネストされた辞書からキーと値を取得するPythonの方法

私は、ネストされた辞書からキーと値を取得しようとしています:

例えば:

a = {'one': {'animal': 'chicken'}, 
    'two': {'fish': {'sea':'shark'}}} 

は、ネストされた辞書から値を取得するための任意の神託の方法は何ですか? like 'fish'の価値にまっすぐになる?ネストされた辞書に「魚」キーですべての項目を検索したい場合は、事前に

おかげ

+2

'' ['two'] ['fish'] 'で十分ではありませんか? –

+1

どのような出力を正確にしたいですか? –

+0

出力タイプは問題ではありません...私はちょうど['something'] ['somethingelse'] ['fish']を避けたいと思います...私は辞書に直接行き、値を取得したいと思います。 。 –

答えて

0

、あなたは、この答えflatten nested python dictionaries-compressing keys - answer @Imran

import collections 
def get_by_key_in_nested_dict(d, key, parent_key='', sep='_'): 
    items = [] 
    for k, v in d.items(): 
     new_key = parent_key + sep + k if parent_key else k 
     if key==k: 
      items.append((new_key, v)) 
     if isinstance(v, collections.MutableMapping): 
      items.extend(get_by_key_in_nested_dict(v, key, new_key, sep).items()) 
    return dict(items) 

を変更することができます

test = { 
    'one': { 
     'animal': 'chicken' 
    }, 
    'two': { 
     'fish': { 
      'sea':'shark', 
      'fish':0 
     } 
    }, 
    'fish':[1,2,3] 
} 

get_by_key_in_nested_dict(test,"fish") 

キー "fish"を持つすべてのアイテムを取得します

{ 
    'fish': [1, 2, 3], 
    'two_fish': {'fish': 0, 'sea': 'shark'}, 
    'two_fish_fish': 0 
} 
関連する問題