513 votes

Convertir Python dict à l'objet?

Je suis à la recherche d’une manière élégante convertir une dict Python normale avec quelques dicts imbriqués à un objet.

Par exemple :

Devraient être accessibles de cette façon :

Je pense, ce n’est pas possible sans récursivité, mais ce qui serait une belle façon d’obtenir un objectstyle pour dicts ?

Je vous remercie à l’avance.

639voto

Eli Bendersky Points 82298

Mise à jour : Dans Python 2.6 et au-delà, examiner si le `` structure de données adapté à vos besoins :

L’alternative (contenu de la réponse original) est :

Ensuite, vous pouvez utiliser :

103voto

Nadia Alramli Points 40381
class obj(object):
    def __init__(self, d):
        for a, b in d.items():
            if isinstance(b, (list, tuple)):
               setattr(self, a, [obj(x) if isinstance(x, dict) else x for x in b])
            else:
               setattr(self, a, obj(b) if isinstance(b, dict) else b)


>>> x = obj(d)
>>> x.b.c
2
>>> x.d[1].foo
'bar'

61voto

SilentGhost Points 79627
<pre><code></code><p>puis ajoutez récursivité à cela et vous avez terminé.</p><p><strong>modifier</strong> comment je mettrait en œuvre, il s’agit :</p><pre><code></code></pre></pre>

47voto

umbrae Points 436

Pour quelqu'un qui arrive de tomber par hasard sur cette question aujourd'hui. En Python 2.6 + il y a une aide de collection appelée `` , qui peut le faire pour vous :

31voto

andyvanee Points 366

Prenant ce que je ressens sont les meilleurs aspects des exemples précédents, voici ce que je suis venu avec :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X