Python - znajdowanie kluczy rodzicielskich dla określonej wartości w słowniku zagnieżdżonym
Usiłuję przetworzyć zagnieżdżony słownik i zwrócić zagnieżdżone klucze nadrzędne dla określonej wartości, gdy wartość może istnieć więcej niż raz w zagnieżdżonym słowniku. Na przykład:
example_dict = { 'key1' : 'value1',
'key2' : 'value2',
'key3' : { 'key3a': 'value3a' },
'key4' : { 'key4a': { 'key4aa': 'value4aa',
'key4ab': 'value4ab',
'key4ac': 'value1'},
'key4b': 'value4b'}
}
Zauważysz, że 'value1' pojawia się dwa razy w powyższym słowniku, i chciałbym utworzyć funkcję, która zwraca albo pojedynczą listę, albo serię list, które identyfikują różne klucze nadrzędne, które w tym przypadku byłyby 'key1 'i (' key4 ',' key4a ', key4ac).
Ten typ problemu został omówiony gdzie indziej na tej stronie, gdy wartość, której szukał, pojawiła się tylko raz, i była łatwo obsługiwana przez następującą funkcję rekurencyjną:
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').
Jeśli uruchomisz powyższy kod w słowniku, otrzymam tylko jedną odpowiedź dla kluczy macierzystych. Każda pomoc byłaby bardzo mile widziana, dzięki!