Aktualisieren verschachtelter Wörterbücher unter Beibehaltung vorhandener Werte
In Python kann das Aktualisieren von Wörterbüchern mit verschachtelten Strukturen schwierig sein, insbesondere wenn Sie Werte ohne verschachtelte Strukturen zusammenführen möchten vorhandene überschreiben. In dieser Frage wird untersucht, wie ein verschachteltes Wörterbuch dictionary1 mit den Inhalten von update aktualisiert wird, während der Wert in Ebene A erhalten bleibt.
Fehler im ursprünglichen Ansatz
Der angegebene Python-Code zeigt einen häufigen Fehler:
dictionary1.update(update)
Dieses einfache Update behält LevelA nicht bei, da das Update-Wörterbuch Vorrang hat und die gesamte Struktur unter Level1 überschreibt.
Rekursive Lösung
Die in der Antwort bereitgestellte Lösung schlägt einen rekursiven Ansatz vor, der Folgendes umfasst:
Aktualisierter Code
Hier ist der verbesserte Code basierend auf der vorgeschlagenen Antwort:
def update(d, u): for k, v in u.items(): if isinstance(v, collections.abc.Mapping): d[k] = update(d.get(k, {}), v) else: d[k] = v return d dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dict = update(dictionary1, update) print(updated_dict)
Ausgabe
{'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Erklärung
Diese Lösung aktualisiert die verschachtelten Wörterbücher rekursiv und behält dabei den vorhandenen LevelA-Wert bei, während die Werte unter LevelB wie erwartet aktualisiert werden.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich verschachtelte Wörterbücher in Python und behalte dabei vorhandene Werte bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!