Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe einer Schlüsselliste in Python effizient auf verschachtelte Wörterbuchelemente zugreifen und diese ändern?
Zugriff auf verschachtelte Wörterbuchelemente mit einer Schlüsselliste
Beim Umgang mit komplexen Wörterbuchstrukturen kann es eine häufige Herausforderung sein, diese zu durchqueren, um auf bestimmte Elemente zuzugreifen . Es ist von entscheidender Bedeutung, einen effizienten und flexiblen Ansatz zum Navigieren in diesen Wörterbüchern zu finden.
Stellen Sie sich das Szenario vor, in dem Sie ein verschachteltes Wörterbuch haben wie:
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } }
Möglicherweise müssen Sie über eine Liste von auf diese Elemente zugreifen Tasten wie [„a“, „r“] oder [„b“, „v“, „y“]. Der folgende Ansatz könnte zwar funktionieren:
# Get a given data from a dictionary with position provided as a list def getFromDict(dataDict, mapList): for k in mapList: dataDict = dataDict[k] return dataDict
Es gibt eine effizientere Methode mit Pythons Reduce():
from functools import reduce # forward compatibility for Python 3 import operator def getFromDict(dataDict, mapList): return reduce(operator.getitem, mapList, dataDict)
Diese verbesserte Methode nutzt Reduce, um das Wörterbuch unter Verwendung der Operatoren zu durchlaufen .getitem-Funktion, um über die Schlüsselliste auf jedes verschachtelte Element zuzugreifen.
Zum Festlegen von Werten können wir getFromDict nutzen, um das richtige „übergeordnete“ Wörterbuch zu finden und dann Weisen Sie den Wert zu:
def setInDict(dataDict, mapList, value): getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
Diese Methode durchläuft das Wörterbuch effizient an die entsprechende Stelle in der Datenstruktur und aktualisiert den Wert.
Schließlich können wir Snake_case-Funktionsnamen bereitstellen und diese Funktionen erweitern um mit gemischten Datentypen zu arbeiten, was zu Folgendem führt:
from functools import reduce # forward compatibility for Python 3 import operator def get_by_path(root, items): return reduce(operator.getitem, items, root) def set_by_path(root, items, value): get_by_path(root, items[:-1])[items[-1]] = value def del_by_path(root, items): del get_by_path(root, items[:-1])[items[-1]]
Diese Funktionen bieten ein vielseitiges Dienstprogramm zum Navigieren und Bearbeiten verschachtelter Wörterbücher, Listen usw Mischung aus beidem.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer Schlüsselliste in Python effizient auf verschachtelte Wörterbuchelemente zugreifen und diese ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!