Maison > développement back-end > Tutoriel Python > Comment accéder aux dictionnaires Python imbriqués comme des objets ?

Comment accéder aux dictionnaires Python imbriqués comme des objets ?

Mary-Kate Olsen
Libérer: 2024-11-11 04:51:03
original
835 Les gens l'ont consulté

How to Access Nested Python Dictionaries Like Objects?

Comment transformer un dictionnaire Python imbriqué en un objet

Pour plus de commodité, il est souhaitable d'accéder aux données en utilisant l'accès aux attributs sur les dictionnaires contenant des dictionnaires et listes, semblables à la syntaxe d'objet de JavaScript. Par exemple :

d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
Copier après la connexion

Ces données doivent être accessibles comme suit :

x = dict2obj(d)
x.a
1
x.b.c
2
x.d[1].foo
bar
Copier après la connexion

La création d'une telle fonction nécessite une récursion. Voici une approche pour obtenir une fonctionnalité de type objet pour les dictionnaires :

class Struct:
    def __init__(self, **entries):
        self.__dict__.update(entries)
Copier après la connexion

Utilisation :

args = {'a': 1, 'b': 2}
s = Struct(**args)
s.a
1
s.b
2
Copier après la connexion

Solution alternative : Namedtuples

Pour Python versions 2.6 et ultérieures, pensez à utiliser les données namedtuple structure :

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

Vous disposez désormais d'un tuple nommé qui se comporte comme un objet, avec un accès aux attributs pour ses champs. Cela fournit une solution concise et très lisible.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal