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
Freigeben: 2024-11-11 04:51:03
Original
784 Leute haben es durchsucht

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"}]}
Nach dem Login kopieren

Auf diese Daten sollte wie folgt zugegriffen werden:

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

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)
Nach dem Login kopieren

Verwendung:

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

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'])
Nach dem Login kopieren

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!

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