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

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

DDD
DDDOriginal
2024-11-11 08:50:021031Durchsuche

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

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

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!

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