In Python stoßen wir häufig auf Szenarien, in denen wir mehrere verschachtelte Wörterbücher kombinieren müssen. Diese Aufgabe kann eine Herausforderung sein, insbesondere wenn die Wörterbücher unterschiedlich tief sind und es zu Konflikten kommen kann.
Um Wörterbücher mehrerer Wörterbücher zusammenzuführen und die Hierarchie aufrechtzuerhalten, verwenden wir eine rekursive Funktion:
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)]) elif a[key] != b[key]: raise Exception('Conflict at ' + '.'.join(path + [str(key)])) else: a[key] = b[key] return a
Diese Funktion akzeptiert zwei Wörterbücher, a und b, zusammen mit einem optionalen Pfadparameter zum Verfolgen des aktuellen Pfads im zusammengeführten Wörterbuch. Es durchläuft jeden Schlüssel in b und führt die folgenden Aktionen aus:
Abschließend wird der Schlüssel zusammengeführt Wörterbuch a wird zurückgegeben.
Um mehrere Wörterbücher zusammenzuführen, können Sie Reduzieren verwenden, um alle Wörterbücher in einem einzigen Wörterbuch zusammenzufassen:
from functools import reduce reduce(merge, [dict1, dict2, dict3...])
Dieser Vorgang fügt den Inhalt aller Wörterbücher dem ersten Wörterbuch in der Liste hinzu.
Beispiel:
dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}} dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}} print(merge(dict1, dict2)) # Output: # {1:{'a':{'A'}}, 2:{'b':{'B'}, 'c':{'C'}}, 3:{'d':{'D'}}}
Beachten Sie, dass das resultierende Wörterbuch in Diktat1 gespeichert ist.
Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte Wörterbücher in Python effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!