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?

Wie kann ich mithilfe einer Schlüsselliste effizient auf Daten in verschachtelten Python-Wörterbüchern zugreifen und diese ändern?

DDD
DDDOriginal
2024-12-23 08:38:16841Durchsuche

How Can I Efficiently Access and Modify Data in Nested Python Dictionaries Using a List of Keys?

Navigieren in verschachtelten Wörterbüchern mit einer Liste von Schlüsseln

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!

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