Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe einer Schlüsselliste in Python effizient auf verschachtelte Wörterbuchelemente zugreifen und diese ändern?

Wie kann ich mithilfe einer Schlüsselliste in Python effizient auf verschachtelte Wörterbuchelemente zugreifen und diese ändern?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 16:47:14216Durchsuche

How to Efficiently Access and Modify Nested Dictionary Items Using a Key List in Python?

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!

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