Heim >Backend-Entwicklung >Python-Tutorial >Wie greife ich auf verschachtelte Python-Wörterbücher wie Objekte zu?

Wie greife ich auf verschachtelte Python-Wörterbücher wie Objekte zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-11 04:51:03781Durchsuche

How to Access Nested Python Dictionaries Like Objects?

So transformieren Sie ein verschachteltes Python-Wörterbuch in ein Objekt

Der Einfachheit halber ist es wünschenswert, auf Daten über den Attributzugriff auf Wörterbücher zuzugreifen, die verschachtelte Wörter enthalten Wörterbücher und Listen, ähnlich der Objektsyntax von JavaScript. Zum Beispiel:

d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}

Auf diese Daten sollte wie folgt zugegriffen werden:

x = dict2obj(d)
x.a
1
x.b.c
2
x.d[1].foo
bar

Das Erstellen einer solchen Funktion erfordert eine Rekursion. Hier ist ein Ansatz, um objektähnliche Funktionalität für Wörterbücher zu erreichen:

class Struct:
    def __init__(self, **entries):
        self.__dict__.update(entries)

Verwendung:

args = {'a': 1, 'b': 2}
s = Struct(**args)
s.a
1
s.b
2

Alternative Lösung: Namedtuples

Für Python In den Versionen 2.6 und höher sollten Sie die Verwendung der Datenstruktur namedtuple in Betracht ziehen:

from collections import namedtuple
MyStruct = namedtuple('MyStruct', 'a b d')
s = MyStruct(a=1, b={'c': 2}, d=['hi'])

Jetzt haben Sie ein benanntes Tupel, das sich wie ein Objekt verhält und über Attributzugriff auf seine Felder verfügt. Dies bietet eine prägnante und gut lesbare Lösung.

Das obige ist der detaillierte Inhalt vonWie greife ich auf verschachtelte Python-Wörterbücher wie Objekte zu?. 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