In diesem Programmierszenario besteht unser Ziel darin, eine potenziell mehrschichtige Wörterbuchstruktur zu durchlaufen und Schlüssel-Wert-Paare dort auszugeben, wo sich die Werte befinden selbst keine verschachtelten Wörterbücher. Wenn es sich bei einem Wert zufällig um ein verschachteltes Wörterbuch handelt, müssen wir ihn rekursiv durchsuchen und auch seine Schlüssel-Wert-Paare ausgeben.
Um dies zu erreichen, reichen einfache Iterationstechniken möglicherweise nicht aus. Stattdessen können wir die Kraft der Rekursion nutzen. Hier ist eine überarbeitete Funktion, die Rekursion beinhaltet, um verschachtelte Wörterbücher beliebiger Tiefe effektiv zu verarbeiten:
def myprint(d): for k, v in d.items(): if isinstance(v, dict): myprint(v) else: print("{0} : {1}".format(k, v))
Durch den Aufruf von myprint mit dem ursprünglichen Wörterbuch tritt die Funktion in eine rekursive Schleife ein. Es besucht jedes Schlüssel-Wert-Paar und prüft, ob der Wert ein Wörterbuch ist. Wenn dies der Fall ist, ruft sich die Funktion selbst mit dem Wertewörterbuch als neue Eingabe auf und führt effektiv einen Drilldown in alle verschachtelten Ebenen durch.
Wenn der Wert kein Wörterbuch ist, gibt die Funktion einfach das aktuelle Schlüssel-Wert-Paar aus. Dieser Vorgang wird fortgesetzt, bis alle Ebenen des Wörterbuchs durchlaufen wurden.
Hier ist eine Demonstration mit einem Beispiel eines verschachtelten Wörterbuchs:
d = { "xml": { "config": { "portstatus": {"status": "good"}, "target": "1", }, "port": "11", } } myprint(d)
Dadurch wird die gewünschte Ausgabe erzeugt:
xml : {config: {portstatus: {status: good}, target: 1}, port: 11} config : {portstatus: {status: good}, target: 1} portstatus : {status: good} status : good target : 1 port : 11
Wie Sie sehen können, iteriert die Funktion rekursiv durch das Wörterbuch, gibt alle nicht verschachtelten Werte aus und führt einen Drilldown in verschachtelte Wörterbücher durch, bis sie das erreicht Blattknoten.
Das obige ist der detaillierte Inhalt vonWie kann ich Schlüssel-Wert-Paare aus einem verschachtelten Wörterbuch rekursiv iterieren und drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!