Lets sagen, dass ich ein Wörterbuch der Form haben:
d={'geo': {'bgcolor': 'white','lakecolor': 'white','caxis': {'gridcolor': 'white', 'linecolor': 'white',}},
'title': {'x': 0.05},
'yaxis': {'automargin': True,'linecolor': 'white','ticks': '','zerolinecolor': 'white','zerolinewidth': 2}
}
Wie kann man arbeiten Sie Ihren Weg durch diese dict und machen Sie eine Liste von jedem vollständigen Schlüsselpfad, der den Wert enthält 'white'
? Von Benutzern jfs in der Post definierte eine Funktion Suche nach einem Wert in einem verschachtelten Wörterbuch Python können Sie überprüfen , ob oder ob nicht 'white'
mindestens ein Mal auftritt und gibt auch den Pfad:
# in:
def getpath(nested_dict, value, prepath=()):
for k, v in nested_dict.items():
path = prepath + (k,)
if v == value: # found value
return path
elif hasattr(v, 'items'): # v is a dict
p = getpath(v, value, path) # recursive call
if p is not None:
return p
getpath(d,'white')
# out:
('geo', 'bgcolor')
Aber ‚weiß‘ kommt an anderen Orten auch, wie in:
1. d['geo']['lakecolor']
2: d['geo']['caxis']['gridcolor']
3: d['yaxis']['linecolor']
Wie kann ich sicherstellen, dass die Funktion alle Pfade findet?
Ich habe versucht , über die Funktion der Anwendung , bis er zurückkehrt , none
während gefunden Pfade Beseitigung einer nach dem anderen, aber das schnell in einen hässlichen Chaos verwandelt.
Vielen Dank für Ihre Anregungen!