Wie kann ich ein verschachteltes Python-Wörterbuch in eine objektähnliche Struktur für den attributbasierten Datenabruf konvertieren?

DDD
Freigeben: 2024-11-11 08:50:02
Original
1006 Leute haben es durchsucht

How can I convert a nested Python dictionary into an object-like structure for attribute-based data retrieval?

Verschachtelte Python-Dicts in Objekte konvertieren

Accessor-Methoden bieten eine bequeme Möglichkeit, Daten aus komplexen Datenstrukturen abzurufen und ermöglichen eine intuitive objektorientierte Navigation. Den nativen Wörterbüchern von Python fehlt diese Funktionalität jedoch von Natur aus.

Problem: Wie können wir ein verschachteltes Python-Wörterbuch in eine objektähnliche Struktur umwandeln und so den attributbasierten Datenabruf ermöglichen?

Antwort:

Verwenden von Namedtuples (Python 2.6 und höher)

Für neuere Versionen von Python (2.6 und höher) bieten Namedtuples eine elegante Lösung. Diese stellen unveränderliche benutzerdefinierte Datentypen mit benannten Feldern dar:

from collections import namedtuple

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

print(s.a, s.b['c'], s.d[0])
# Output: 1 2 hi
Nach dem Login kopieren

Verwenden einer benutzerdefinierten Strukturklasse

Alternativ können Sie eine benutzerdefinierte Strukturklasse erstellen, die das Verhalten von nachahmt Objekte:

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

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

print(s.a, s.b)
# Output: 1 2
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein verschachteltes Python-Wörterbuch in eine objektähnliche Struktur für den attributbasierten Datenabruf konvertieren?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage