„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich eine tiefe Verschmelzung verschachtelter Wörterbücher in Python durchführen?

Wie kann ich eine tiefe Verschmelzung verschachtelter Wörterbücher in Python durchführen?

Gepostet am 2025-03-22
Durchsuche:319

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

Deep Merge of Dictionaries of Dictionaries in Python

verschmelzen mehrere Wörterbücher mit verschachtelten Schlüsseln können 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

an. Diese Funktion nimmt zwei Wörterbücher, a und b, und einen Pfad, der den aktuellen Standort in der verschachtelten Struktur verfolgt. Es iteriert die Schlüssel in B und prüft, ob die entsprechende Schlüssel in a vorhanden ist. Wenn die Werte an diesem Schlüssel beide Wörterbücher sind, ruft sie die Zusammenführungsfunktion rekursiv auf, um diese Unterwörterbücher zusammenzuführen. Andernfalls aktualisiert es den Wert in einem mit dem Wert aus b.

für das Beispieldikte oben würde die Merge -Funktion das gewünschte Ergebnis erzeugen:

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 seinen Inhalt bewahren möchten, können Sie vor dem Zusammenführen eine Kopie erstellen, z. B. verschmelzen (dict (a), b).

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3