Heim > Artikel > Backend-Entwicklung > Wie aktualisiere ich ein verschachteltes Wörterbuch und behalte dabei bestimmte Schlüssel-Wert-Paare bei?
Aktualisieren eines verschachtelten Wörterbuchs unterschiedlicher Tiefe
Um ein verschachteltes Wörterbuch (Wörterbuch1) nahtlos mit den Inhalten eines anderen verschachtelten Wörterbuchs (Aktualisierung) zu aktualisieren Während bestimmte Schlüssel-Wert-Paare erhalten bleiben, ist es notwendig, eine rekursive Lösung zu verwenden, die die unterschiedlichen Tiefen der Wörterbücher berücksichtigt.
Betrachten Sie das folgende Beispielszenario:
Vor dem Update:
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } }
Die Verwendung der Standardaktualisierungsmethode würde die vorhandenen „Level2“-Werte in Wörterbuch1 überschreiben, was zu Folgendem führt:
dictionary1.update(update) print(dictionary1)
{ "level1": { "level2": {"levelB": 10} # "levelA" is lost } }
Rekursive Lösung:
Um dieser Aufbewahrungsanforderung gerecht zu werden, bietet der folgende Python-Code eine rekursive Lösung:
import copy def update_dictionary(d, u): for k, v in u.items(): if isinstance(v, dict): # If the value is a dictionary, recursively update d[k] = update_dictionary(d.get(k, {}), v) else: # If the value is not a dictionary, simply update d[k] = copy.deepcopy(v) return d
Diese Lösung erstellt eine tiefe Kopie des ursprünglichen Wörterbuchs1, um direkte Aktualisierungen zu verhindern. Anschließend wird das Aktualisierungswörterbuch (u) durchlaufen und die entsprechenden Werte in d rekursiv aktualisiert. Wenn der Wert ein Wörterbuch ist, wird die Rekursion fortgesetzt. Andernfalls wird der Wert direkt aktualisiert.
Verwendung:
Anwenden dieser Lösung auf das frühere Beispiel:
result = update_dictionary(dictionary1, update) print(result)
Ergebnis:
{ "level1": { "level2": {"levelA": 0, "levelB": 10} # "levelA" preserved } }
Diese Lösung aktualisiert effektiv den „levelB“-Wert und behält gleichzeitig den „levelA“-Wert im Originalwörterbuch bei. Es verarbeitet verschachtelte Wörterbücher unterschiedlicher Tiefe und stellt sicher, dass bestimmte Schlüssel-Wert-Paare während des Aktualisierungsprozesses erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich ein verschachteltes Wörterbuch und behalte dabei bestimmte Schlüssel-Wert-Paare bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!