Heim > Artikel > Backend-Entwicklung > Wie aktualisiere ich ein verschachteltes Wörterbuch in Python und behalte dabei bestimmte Werte in unterschiedlichen Tiefen bei?
Aktualisierung verschachtelter Wörterbücher mit Tiefenerhaltung
In Python kann die Aktualisierung eines verschachtelten Wörterbuchs schwierig sein, insbesondere wenn Sie dessen Inhalte mit zusammenführen möchten ein anderes Wörterbuch unter Beibehaltung spezifischer Werte in unterschiedlichen Tiefen. Stellen Sie sich das folgende Szenario vor:
Wie können wir bei zwei Wörterbüchern, Wörterbuch1 und Update, Wörterbuch1 mit dem Inhalt von Update aktualisieren, ohne einen bestimmten Wert auf der tiefsten Ebene (z. B. „EbeneA“) zu überschreiben, während alle anderen Werte aktualisiert werden? ?
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } }
Wenn wir einfach die Aktualisierungsmethode verwenden, überschreibt sie das gesamte Unterverzeichnis „level2“ und verliert den Wert „levelA“:
dictionary1.update(update) print(dictionary1)
{ "level1": { "level2": {"levelB": 10} } }
Um diese Herausforderung anzugehen , wir benötigen eine rekursive Lösung, die die variable Tiefe der Wörterbücher berücksichtigt und Werte entsprechend zusammenführt.
Rekursive Lösung:
Der folgende Code implementiert eine rekursive „partielle Aktualisierung“ Funktion, die Wörterbuchwerte aktualisiert, ohne bestimmte Schlüssel zu überschreiben:
import copy def partial_update(d, u, preserve): for k, v in u.items(): if isinstance(v, dict): if d.get(k, None) is None: d[k] = copy.deepcopy(v) else: partial_update(d[k], v, preserve) elif k in preserve: continue else: d[k] = copy.deepcopy(v) return d
Die Funktion „partial_update“ benötigt drei Argumente:
Um den Wert „levelA“ in unserem Beispiel beizubehalten, können wir den folgenden Code verwenden:
partial_update(dictionary1, update, ["levelA"]) print(dictionary1)
{ "level1": { "level2": {"levelA": 0, "levelB": 10} } }
Bei dieser Lösung erstellen wir vor der Aktualisierung eine Kopie der Wörterbücher, um unerwartete Änderungen zu verhindern. Dadurch wird sichergestellt, dass die Originalwörterbücher auch nach der Teilaktualisierung erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich ein verschachteltes Wörterbuch in Python und behalte dabei bestimmte Werte in unterschiedlichen Tiefen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!