Bei der Arbeit mit verschachtelten Wörterbüchern ist es häufig erforderlich, bestimmte Schlüssel zu aktualisieren, ohne dass sich dies auf die anderen Ebenen auswirkt. Allerdings überschreibt die Standard-Update-Methode in Python alle Schlüssel auf derselben Ebene, was es schwierig macht, dieses Ziel zu erreichen.
Ein rekursiver Ansatz kann dieses Problem effektiv lösen. Durch rekursives Durchlaufen der Wörterbücher können wir Schlüssel in den entsprechenden Tiefen identifizieren und aktualisieren und gleichzeitig die vorhandene Struktur beibehalten.
Zum Beispiel kann die folgende rekursive Funktion verwendet werden, um den Inhalt von update in Wörterbuch1 zu aktualisieren, ohne EbeneA zu überschreiben:
def update(d, u): for k, v in u.items(): if isinstance(v, dict): d[k] = update(d.get(k, {}), v) else: d[k] = v return d
In dieser Funktion prüfen wir, ob v ein Wörterbuch ist und rufen rekursiv update mit den entsprechenden Unterwörterbüchern auf. Wenn v kein Wörterbuch ist, aktualisieren wir einfach den entsprechenden Schlüssel in d. Dadurch wird sichergestellt, dass Zwischenschlüssel nicht überschrieben werden.
Betrachten Sie das folgende Beispiel:
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dictionary = update(dictionary1, update) print(updated_dictionary) # Output: # {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Wie Sie sehen können, bleibt EbeneA im aktualisierten Wörterbuch erhalten. obwohl das Update einen Wert für LevelB enthält. Dies zeigt die Wirksamkeit des rekursiven Ansatzes.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich verschachtelte Wörterbücher in Python, ohne Zwischenschlüssel zu überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!