9

次のネストされた辞書から、のすべての親辞書キーを取得するにはどうすればよい'value4ac'ですか?値を開始することで、、、'value4ac'を取得したいと思います。'key4''key4a''Key4ac'

example_dict = { 'key1' : 'value1',
                 'key2' : 'value2',
                 'key3' : { 'key3a': 'value3a' },
                 'key4' : { 'key4a': { 
                                         'key4aa': 'value4aa',
                                         'key4ab': 'value4ab',
                                         'key4ac': 'value4ac'
                                     },
                            'key4b': 'value4b'
                           }
                   } 
4

2 に答える 2

17

救助への再帰!

example_dict = { 'key1' : 'value1',
                 'key2' : 'value2',
                 'key3' : { 'key3a': 'value3a' },
                 'key4' : { 'key4a': { 'key4aa': 'value4aa',
                                       'key4ab': 'value4ab',
                                       'key4ac': 'value4ac'},
                            'key4b': 'value4b'}
                }

def find_key(d, value):
    for k,v in d.items():
        if isinstance(v, dict):
            p = find_key(v, value)
            if p:
                return [k] + p
        elif v == value:
            return [k]

print find_key(example_dict,'value4ac')

使い方

アイテムに目を通し、2つのケースをチェックします

  • item は辞書ではありません -- この場合、探している値であるかどうかを確認します。そうであれば、キーのみを含むリストを返します。(これは再帰の基本ケースです)。
  • item は辞書です -- その辞書でキーを探してみてください。そのディクショナリ (またはサブディクショナリ) で見つかった場合は、パスの残りの部分に追加された正しいパスを取るキーを返します。
于 2013-03-04T20:12:46.707 に答える