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!

questionAnswers(2)

yourAnswerToTheQuestion