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!