Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Schlüssel-Wert-Paare aus einem verschachtelten Wörterbuch rekursiv iterieren und drucken?

Wie kann ich Schlüssel-Wert-Paare aus einem verschachtelten Wörterbuch rekursiv iterieren und drucken?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 17:56:14708Durchsuche

How Can I Recursively Iterate and Print Key-Value Pairs from a Nested Dictionary?

Iterieren durch verschachtelte Wörterbuchwerte

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn