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
DDDOriginal
2024-12-04 02:03:10975Durchsuche

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"}}
}

Die gewünschte Ausgabe ist:

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

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

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))

Die Ausgabe wäre:

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

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!

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