Maison >développement back-end >Tutoriel Python >Comment puis-je convertir un dictionnaire Python imbriqué en une structure de type objet pour la récupération de données basée sur les attributs ?

Comment puis-je convertir un dictionnaire Python imbriqué en une structure de type objet pour la récupération de données basée sur les attributs ?

DDD
DDDoriginal
2024-11-11 08:50:021058parcourir

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

Conversion de dicts Python imbriqués en objets

Les méthodes d'accès offrent un moyen pratique de récupérer des données à partir de structures de données complexes, permettant une navigation intuitive orientée objet. Cependant, les dictionnaires natifs de Python manquent intrinsèquement de cette fonctionnalité.

Problème : Comment pouvons-nous convertir un dictionnaire Python imbriqué en une structure de type objet, permettant une récupération de données basée sur les attributs ?

Réponse :

Utilisation de tuples nommés (Python 2.6 et versions ultérieures)

Pour les versions plus récentes de Python (2.6 et versions ultérieures), les tuples nommés fournissent un solution élégante. Ceux-ci représentent des types de données personnalisés immuables avec des champs nommés :

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

Utilisation d'une classe Struct personnalisée

Vous pouvez également créer une classe Struct personnalisée qui imite le comportement de objets :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn