본문 바로가기
컴퓨터 언어/Python

[ Python 3 ] EasyDict 라이브러리 사용해보기!

by SuperMemi 2022. 9. 20.
반응형

[ Python 3 ] EasyDict 라이브러리 사용해보기!

 

 


EasyDict 라이브러리 설치

pip install easydict

EasyDict 역할

 

EasuDict 라이브러리는 딕셔너리(dict)의 value를 속성(attribute)처럼 재귀적으로 접근할 수 있게 만들어줍니다.


예시

일반적으로 파이썬의 딕셔너리 객체는 key를 통해 value을 불러옵니다.

>>> ex_dict = {'foo':3, 'bar':{'x':1, 'y':2}}
>>> ex_dict['foo']
3

 

그러나 dot(.) 을 통해서는 불러올 수 없습니다.

>>> ex_dict.foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'foo'

 

**Point 1) easydict 라이브러리의 EasyDict 을 이용하게 되면 value를 속성 값처럼 dot(.)을 통해 불러올 수 있습니다.

>>> from easydict import EasyDict
>>> easy_d = EasyDict({'foo':3, 'bar':{'x':1, 'y':2}})
>>> easy_d.foo
3
>>> easy_d.bar
{'x': 1, 'y': 2}

값 변경도 가능합니다.

>>> easy_d.foo = 55
>>> easy_d.foo
55

 

**Point 2) value를 dot(.)을 통해 재귀적으로 불러올 수 있습니다.

>>> easy_d.bar.x
1
>>> easy_d.bar.y
2

 

**Point 3) 구문 분석된 JSON 파일을 쉽게 이용할 수 있습니다.

>>> from easydict import EasyDict
>>> from simplejson import loads
>>> j = """{
... "Buffer": 12,
... "List1": [
...     {"type" : "point", "coordinates" : [100.1,54.9] },
...     {"type" : "point", "coordinates" : [109.4,65.1] },
...     {"type" : "point", "coordinates" : [115.2,80.2] },
...     {"type" : "point", "coordinates" : [150.9,97.8] }
... ]
... }"""
>>>
>>> ex_json_dict = EasyDict(loads(j))
>>> ex_json_dict.Buffer
12
>>> ex_json_dict.List1[0].type
'point'
>>> ex_json_dict.List1[2].coordinates
[115.2, 80.2]
>>> ex_json_dict.List1[2].coordinates[1]
80.2​

 

**Point 4) 클래스 속성과 인스턴스 속성을 일반적인 객체에 접근하듯 쉽게 이용할 수 있습니다.

>>> class Person(EasyDict):
...     name = "james"
...
>>> me = Person({'age':25})
>>> me
{'age': 25, 'name': 'james'}
>>> me.name
'james'
>>> me['name']
'james'
>>> me.age
25
>>> me['age']
25

인스턴스를 생성하면 인스턴스에서 클래스 속성을 참조하지 않고,

클래스 속성을 인스턴스 속성으로 새로 생성하여 사용하기 때문에 Person.name 을 변경해도 me.name은 변경되지 않습니다.

>>> Person.name is me.name
True
>>> Person.name = 'jane'
>>> Person.name is me.name
False
>>> Person.name
'jane'
>>> me.name
'james'

클래스 속성과 인스턴스 속성을 잘 모르시다면 아래글을 읽어보세요!

[ Python 3 ] 클래스(Class)를 제대로 알아보자! (인스턴스 속성, 클래스 속성, 메소드)

 

[ Python 3 ] 클래스(Class)를 제대로 알아보자! (인스턴스 속성, 클래스 속성, 메소드)

[ Python 3 ] 클래스(Class)를 제대로 알아보자! (인스턴스 속성, 클래스 속성, 메소드) 간단하게 클래스와 객체가 무엇인지는 다들 잘 아실 겁니다. 그러나 클래스 안의 데이터와 메소드들이

supermemi.tistory.com

 


[ 참고 ]

https://pypi.org/project/easydict/


반응형