Heim > Backend-Entwicklung > Python-Tutorial > Wie führt man eine tiefe Zusammenführung verschachtelter Wörterbücher in Python durch?

Wie führt man eine tiefe Zusammenführung verschachtelter Wörterbücher in Python durch?

DDD
Freigeben: 2024-12-04 02:03:10
Original
933 Leute haben es durchsucht

How to Perform a Deep Merge of Nested Dictionaries in Python?

Deep Merge von Wörterbüchern von Wörterbüchern in Python

Das Zusammenführen mehrerer Wörterbücher mit verschachtelten Schlüsseln kann eine herausfordernde Aufgabe sein. Betrachten wir das folgende Beispiel:

dict1 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}}
}

dict2 = {
    2: {"c": {"C"}},
    3: {"d": {"D"}}
}
Nach dem Login kopieren

Die gewünschte Ausgabe ist:

dict3 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}, "c": {"C"}},
    3: {"d": {"D"}}
}
Nach dem Login kopieren

Um diese tiefe Zusammenführung zu erreichen, können wir eine rekursive Funktion verwenden:

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            else:
                a[key] = b[key]
        else:
            a[key] = b[key]

    return a
Nach dem Login kopieren

Diese Funktion benötigt zwei Wörterbücher, a und b, und einen Pfad, der die aktuelle Position in der verschachtelten Struktur verfolgt. Es durchläuft die Schlüssel in b und prüft, ob der entsprechende Schlüssel in a vorhanden ist. Wenn es sich bei den Werten an diesem Schlüssel um beide Wörterbücher handelt, wird die Zusammenführungsfunktion rekursiv aufgerufen, um diese Unterwörterbücher zusammenzuführen. Andernfalls wird der Wert in a mit dem Wert aus b aktualisiert.

Für die obigen Beispieldiktate würde die Zusammenführungsfunktion das gewünschte Ergebnis liefern:

print(merge(dict1, dict2))
Nach dem Login kopieren

Die Ausgabe wäre:

{
    1: {'a': {'A'}},
    2: {'b': {'B'}, 'c': {'C'}},
    3: {'d': {'D'}}
}
Nach dem Login kopieren

Hinweis: Diese Funktion mutiert das erste Wörterbuch, a. Wenn Sie den Inhalt beibehalten möchten, können Sie vor dem Zusammenführen eine Kopie erstellen, z. B. merge(dict(a), b).

Das obige ist der detaillierte Inhalt vonWie führt man eine tiefe Zusammenführung verschachtelter Wörterbücher in Python durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage