ich versuche grade etwas simples zu lösen: Ich habe ein Dictionary mit beliebiger Tiefe iterieren. Das Dictionary enthält Dictionary Einträge und diese wiederum Dictionary Einträge usw.
Ich suche dafür eine pythonische Lösung, bisher bin ich nur auf sehr hässlichen Code gekommen, den ich sofort wieder weggeschmissen hab. Gibts dafür vielleicht sogar schon vordefinierte Python Funktionen?
Edit: Spezifikation erweitert
Schlüssel sind beliebige Objekte wobei die Values Dictionaries sind. Values müssen nicht notwendigerweise Dictionaries sein. Es soll über innere Knoten sowieso Blätter iteriert werden.
Code: Alles auswählen
def iter_deep(input):
for key, value in input.iteritems():
if isinstance(value, dict):
yield key
for i in iter_deep(value):
yield i
else:
yield key, value
Code: Alles auswählen
testing = {"Main":
{"Sub" :
{"Deep1":1, "Deep12" :2},
"Sub2":
{"Deep2" : 2}
}
}
Momentane Ausgabe
Code: Alles auswählen
Main
Sub2
('Deep2', 2)
Sub
('Deep12', 2)
('Deep1', 1)
anogayales