Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-11-11 04:51:03743parcourir

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"}]}

Ces données doivent être accessibles comme suit :

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

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)

Utilisation :

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

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'])

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:
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