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

Dönüştürme Python kwargs için dict?...
Tüm toplamı Python dict değerleri...
Python: Nasıl "mükemmel" bir...
Datetime dönüştürme.UTC tarih damgası ...
Python dönüştürme unix zaman damgası t...