Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mehrstufige Wörterbücher in Python rekursiv zusammenführen?
Mehrstufige Wörterbücher gründlich zusammenführen
In Python kann das rekursive Zusammenführen von Wörterbüchern unter Beibehaltung einer unbekannten Verschachtelungstiefe eine Herausforderung sein. Hier ist eine Lösung, die dieses Problem behebt:
def deep_merge(a: dict, b: dict, path=[]): for key in b: if key in a: if isinstance(a[key], dict) and isinstance(b[key], dict): deep_merge(a[key], b[key], path + [str(key)]) elif a[key] != b[key]: raise Exception('Conflict at ' + '.'.join(path + [str(key)])) else: a[key] = b[key] return a
Diese Funktion verwendet zwei Wörterbücher als Eingabe und führt deren Inhalte rekursiv zusammen. Es behält einen Pfad bei, um die aktuelle Verschachtelungsebene zu verfolgen, um bei Konflikten präzisere Fehlermeldungen bereitzustellen.
Beispiel:
dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}} dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}} result = deep_merge(dict1, dict2) print(result) # {1:{'a':{'A'}}, 2:{'b':{'B'}, 'c':{'C'}}, 3:{'d':{'D'}}}
Beachten Sie, dass deep_merge das erste Argument mutiert, weshalb result enthält das zusammengeführte Wörterbuch.
Um mehrere Wörterbücher zusammenzuführen, ohne eines davon zu ändern, übergeben Sie sie als Schlüsselwort Argumente:
from functools import reduce result = reduce(deep_merge, [dict1, dict2, ...], {})
Das obige ist der detaillierte Inhalt vonWie kann ich mehrstufige Wörterbücher in Python rekursiv zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!