Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich verschachtelte Wörterbücher in Python effizient zusammenführen?

Wie kann ich verschachtelte Wörterbücher in Python effizient zusammenführen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 02:23:10720Durchsuche

How Can I Efficiently Merge Nested Dictionaries in Python?

Verschachtelte Wörterbücher in Python zusammenführen

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:

  • Wenn der Schlüssel in a vorhanden ist und beide Werte Wörterbücher sind, führt es die beiden Wörterbücher rekursiv zusammen und aktualisiert den Pfad.
  • Wenn der Schlüssel in a vorhanden ist, die Werte aber keine Wörterbücher sind, wird auf Konflikte geprüft. Wenn ein Konflikt erkannt wird, wird eine Ausnahme ausgelöst.
  • Wenn der Schlüssel in a nicht vorhanden ist, wird er mit dem Wert von b zu a hinzugefügt.

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!

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