Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe einer Schlüsselliste effizient auf Daten in verschachtelten Python-Wörterbüchern zugreifen und diese ändern?
Problem:
Wie können wir innerhalb eines effizient auf Daten zugreifen und diese bearbeiten? Tief verschachtelte Wörterbuchstruktur unter Verwendung einer Liste von Schlüssel?
Lösung:
Die native Python-Funktion functools.reduce kann verwendet werden, um das Wörterbuch effizient auf einmal zu durchlaufen pass.
Implementierung:
from functools import reduce import operator def get_by_path(root, items): """Access a nested object in root by item sequence.""" return reduce(operator.getitem, items, root)
Verwendung:
Um den Wert am angegebenen Pfad abzurufen, verwenden Sie get_by_path :
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] value = get_by_path(dataDict, maplist) # 1
Einstellung Werte:
Um einen Wert an einem bestimmten Pfad festzulegen, können wir get_by_path erneut verwenden, um das übergeordnete Wörterbuch zu finden und den Wert dem gewünschten Schlüssel zuzuweisen:
def set_by_path(root, items, value): """Set a value in a nested object in root by item sequence.""" get_by_path(root, items[:-1])[items[-1]] = value
Verwendung:
maplist = ["b", "v", "w"] set_by_path(dataDict, maplist, 4)
Zusätzlich Funktionalität:
Der Vollständigkeit halber können wir auch eine Funktion definieren, um ein Schlüssel-Wert-Paar innerhalb des verschachtelten Wörterbuchs zu löschen:
def del_by_path(root, items): """Delete a key-value in a nested object in root by item sequence.""" del get_by_path(root, items[:-1])[items[-1]]
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer Schlüsselliste effizient auf Daten in verschachtelten Python-Wörterbüchern zugreifen und diese ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!