ネストされたディクショナリに値が複数回存在する可能性がある場合、ネストされたディクショナリを処理し、特定の値に対してネストされた親キーを返すのに苦労しています。例えば:
example_dict = { 'key1' : 'value1',
'key2' : 'value2',
'key3' : { 'key3a': 'value3a' },
'key4' : { 'key4a': { 'key4aa': 'value4aa',
'key4ab': 'value4ab',
'key4ac': 'value1'},
'key4b': 'value4b'}
}
上記の辞書に「value1」が 2 回表示されていることに気付くでしょう。ここでは、異なる親キー (この場合は「key1」) を識別する単一のリストまたは一連のリストを返す関数を作成したいと考えています。 ' および ('key4', 'key4a', key4ac)。
このタイプの問題は、このサイトの他の場所で処理され、探している値が 1 回しか表示されず、次の再帰関数によって容易に処理されました。
def find_key(d,key):
for k,v in d.items():
if isinstance(v,dict):
p = find_key(v,key)
if p:
return [k] + p
elif v == key:
return [k]
print find_key(example_dict,'value4ac').
上記のコードをディクショナリで実行すると、親キーに対して 1 つの回答しか得られません。どんな助けでも大歓迎です、ありがとう!