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
Freigeben: 2024-12-16 02:33:10
Original
965 Leute haben es durchsucht

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

Zugriff auf verschachtelte Wörterbuchelemente über eine Schlüsselliste: Erkunden einer verschachtelten Struktur

Komplexe Datenstrukturen wie Wörterbücher erfordern oft effiziente Methoden zum Durchlaufen und Bearbeiten deren verschachtelter Inhalt. Eine häufige Herausforderung besteht darin, auf bestimmte Elemente innerhalb einer verschachtelten Struktur basierend auf einer bereitgestellten Liste von Schlüsseln zuzugreifen.

Bestehender Ansatz

Eine Methode, dieses Problem anzugehen, besteht darin, iterativ durch die zu navigieren Wörterbuch, indem Sie jede Taste in der Liste verwenden, um das gewünschte Element zu finden. Dieser Ansatz kann jedoch bei tief verschachtelten Strukturen immer ausführlicher und fehleranfälliger werden.

Verbesserte Lösung mit Reduce

Eine elegantere und effizientere Lösung beinhaltet die Nutzung von Pythons Reduce ()-Funktion. redu() wendet iterativ eine angegebene Operation auf eine Folge von Elementen an und reduziert die Folge auf einen einzelnen Wert. Indem wir „operator.getitem“ als Operation verwenden, können wir das Wörterbuch durchlaufen und jeden Schlüssel in der Liste verwenden, um den zugehörigen Wert abzurufen.

from functools import reduce  # forward compatibility for Python 3
import operator

def get_from_dict(dataDict, mapList):
    return reduce(operator.getitem, mapList, dataDict)
Nach dem Login kopieren

Einen Wert festlegen

Das gleiche Prinzip kann zum Ändern von Werten innerhalb des Wörterbuchs angewendet werden. Indem wir get_from_dict verwenden, um das übergeordnete Wörterbuch und den letzten Schlüssel zu finden, können wir den neuen Wert direkt zuweisen.

def set_in_dict(dataDict, mapList, value):
    get_from_dict(dataDict, mapList[:-1])[mapList[-1]] = value
Nach dem Login kopieren

Zusätzliche Funktionen

Erweiterung der Kernfunktionalität, Wir können zusätzliche Funktionen zum Löschen und Bearbeiten verschachtelter Strukturen erstellen. Zum Beispiel eine Funktion zum Löschen eines Schlüssels:

def del_by_path(root, items):
    del get_from_path(root, items[:-1])[items[-1]]
Nach dem Login kopieren

Vollständiges Beispiel

Hier ist eine vollständige Demonstration des Codes:

dataDict = {
    "a": {
        "r": 1,
        "s": 2,
        "t": 3
    },
    "b": {
        "u": 1,
        "v": {
            "x": 1,
            "y": 2,
            "z": 3
        },
        "w": 3
    }
}

maplist = ["a", "r"]
print(get_from_dict(dataDict, maplist))  # Output: 1

maplist = ["b", "v", "y"]
print(get_from_dict(dataDict, maplist))  # Output: 2

set_in_dict(dataDict, ["b", "v", "w"], 4)

print(dataDict)  # Output: {'a': {'r': 1, 's': 2, 't': 3}, 'b': {'u': 1, 'v': {'w': 4, 'x': 1, 'y': 2, 'z': 3}, 'w': 3}}
Nach dem Login kopieren

Dieser verbesserte Ansatz bietet eine präzise und effiziente Methode zum Navigieren und Ändern komplexer verschachtelter Wörterbuchstrukturen mithilfe einer Liste von Schlüsseln und sorgt so für Flexibilität und Lesbarkeit des Codes.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage