728x90
반응형
질문 : 중첩 된 Python dict를 객체로 변환 하시겠습니까?
일부 중첩 된 딕셔너리 및 목록 (예 : 자바 스크립트 스타일 개체 구문)이있는 딕셔너리에 대한 속성 액세스를 사용하여 데이터를 얻는 우아한 방법을 찾고 있습니다.
예를 들면 :
>>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
다음과 같은 방법으로 액세스 할 수 있어야합니다.
>>> x = dict2obj(d)
>>> x.a
1
>>> x.b.c
2
>>> x.d[1].foo
bar
재귀 없이는 불가능하다고 생각하지만 dicts에 대한 객체 스타일을 얻는 좋은 방법은 무엇입니까?
답변
업데이트 : Python 2.6 이상에서는 namedtuple
데이터 구조가 필요에 맞는지 고려하십시오.
>>> 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
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MyStruct' object has no attribute 'c'
>>> s.d
['hi']
대안 (원래 답변 내용)은 다음과 같습니다.
class Struct:
def __init__(self, **entries):
self.__dict__.update(entries)
그런 다음 다음을 사용할 수 있습니다.
>>> args = {'a': 1, 'b': 2}
>>> s = Struct(**args)
>>> s
<__main__.Struct instance at 0x01D6A738>
>>> s.a
1
>>> s.b
2
출처 : https://stackoverflow.com/questions/1305532/convert-nested-python-dict-to-object
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python에서 시간대 인식 datetime 객체를 만드는 방법 (0) | 2021.12.10 |
---|---|
파이썬 변수의 유형을 결정하는 방법 (0) | 2021.12.09 |
Python : 예외 발생시 무시하고 계속 진행하는 방법 (0) | 2021.12.08 |
파이썬에서 ** kwargs를 사용하는 적절한 방법 (0) | 2021.12.08 |
Python으로 새 딕셔너리 만들기 (0) | 2021.12.08 |