SORU
20 AĞUSTOS 2009, PERŞEMBE


Python dict nesneye dönüştürme?

Zarif bir şekilde bir nesne için biraz iç içe dicts ile normal bir Python dict dönüştürmek için arıyorum.

Örneğin:

>>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}

Bu şekilde erişilebilir olmalıdır:

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

Bu özyineleme olmadan mümkün değildir, ama ne dicts için bir objectstyle almak için iyi bir yol olacağını düşünüyorum?

Şimdiden teşekkür ederim.

CEVAP
20 AĞUSTOS 2009, PERŞEMBE


Güncelleme:Python 2.6 ve sonrası, namedtuple veri yapısı sizin ihtiyaçlarınıza uygun olup olmadığını göz önünde bulundurun:

>>> from collections import namedtuple
>>> MyStruct = namedtuple('MyStruct', 'a b d')
>>> s = MyStruct(a=1, b={'c': 2}, d=['hi'])
>>> s
MyStruct(a=1, b={'c': 2}, d=['hi'])
>>> s.a
1
>>> s.b
{'c': 2}
>>> s.c
>>> s.d
['hi']

Alternatif (orijinal cevap içeriği):

class Struct:
    def __init__(self, **entries): 
        self.__dict__.update(entries)

Daha sonra kullanabilirsiniz:

>>> args = {'a': 1, 'b': 2}
>>> s = Struct(**args)
>>> s
<__main__.Struct instance at 0x01D6A738>
>>> s.a
1
>>> s.b
2

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • MW Technology

    MW Technolog

    28 EKİM 2009