Heim  >  Artikel  >  Backend-Entwicklung  >  Wie aktualisiere ich verschachtelte Wörterbücher in Python, ohne Zwischenschlüssel zu überschreiben?

Wie aktualisiere ich verschachtelte Wörterbücher in Python, ohne Zwischenschlüssel zu überschreiben?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 21:54:02286Durchsuche

How to Update Nested Dictionaries in Python Without Overwriting Intermediate Keys?

Aktualisieren verschachtelter Wörterbücher, ohne Zwischenschlüssel zu überschreiben

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.

Rekursiver Ansatz

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.

Beispielverwendung

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!

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