Python - Finden von übergeordneten Schlüsseln für einen bestimmten Wert in einem verschachtelten Wörterbuch

Ich habe Probleme, ein verschachteltes Wörterbuch zu verarbeiten und die verschachtelten übergeordneten Schlüssel für einen bestimmten Wert zurückzugeben, wenn der Wert möglicherweise mehr als einmal im verschachtelten Wörterbuch vorhanden ist. Zum Beispiel:

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

Sie werden feststellen, dass 'value1' im obigen Wörterbuch zweimal vorkommt, und ich möchte eine Funktion erstellen, die entweder eine einzelne Liste oder eine Reihe von Listen zurückgibt, die die verschiedenen übergeordneten Schlüssel identifizieren, in diesem Fall 'key1' 'und (' key4 ',' key4a ', key4ac).

Diese Art von Problem wurde an anderer Stelle auf dieser Website behoben, als der gesuchte Wert nur einmal auftrat und von der folgenden rekursiven Funktion problemlos behandelt wurde:

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').

Wenn Sie den obigen Code für das Wörterbuch ausführen, erhalte ich nur eine Antwort für die übergeordneten Schlüssel. Jede Hilfe wäre sehr dankbar, Danke!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage