Dictionary 쉽게 사용하기
addict 라이브러리로 Dictionary 편하게 다루기
1. 다층 구조의 dict 자료형 만들기¶
Python에서 JSON을 다룰 때는 dict
타입을 사용하면 매우 편리하지만, 문제는 dict
타입이 그닥 코딩하기 편한 형태가 아니다.
Python에서 다층 구조의 dict
타입 데이터를 만드는 방법은 다음과 같다.
output = {}
output["a"] = 1
output["b"] = 2
output["c"] = {}
output["c"]["d"] = 2
output["c"]["e"] = [3, 4]
output["c"]["f"] = {}
output["c"]["f"]["g"] = {}
output["c"]["f"]["g"]["h"] = [5, 6, 7]
output["c"]["f"]["g"]["i"] = [8, 9, 10]
print(type(output))
print(output)
<class 'dict'>
{'a': 1, 'b': 2, 'c': {'d': 2, 'e': [3, 4], 'f': {'g': {'h': [5, 6, 7], 'i': [8, 9, 10]}}}}
2. Dictionary 자료형 쉽게 다루기¶
addict 라이브러리를 사용하면 다층 구조의 dict
타입 데이터를 아래와 같이 매우 쉽게 다룰 수 있다.
from addict import Dict
test = Dict()
test.a = 1
test.b = 2
test.c.d = 2
test.c.e = [3, 4]
test.c.f.g.h = [5, 6, 7]
test.c.f.g.i = [8, 9, 10]
print(type(test))
print(test)
<class 'addict.addict.Dict'>
{'a': 1, 'b': 2, 'c': {'d': 2, 'e': [3, 4], 'f': {'g': {'h': [5, 6, 7], 'i': [8, 9, 10]}}}}
addict 라이브러리의 Dict
자료형을 Python의 dict
자료형으로 바꾸고 싶다면 아래와 같이 to_dict
메서드를 사용하면 된다.
3. JSON에 응용하기¶
JSON에 응용하면 아래와 같이 복잡한 다층구조의 JSON 데이터에서 특정 데이터만 추출하는 것도 매우 쉽다.
import json
from addict import Dict
with open('input.json') as input:
json_data = Dict(json.load(fp=input))
res = json_data.c.f.g
print(type(json_data))
print(json_data)
print(res)
<class 'addict.addict.Dict'>
{'a': 1, 'b': 2, 'c': {'d': 2, 'e': [3, 4], 'f': {'g': {'h': [5, 6, 7], 'i': [8, 9, 10]}}}}
{'h': [5, 6, 7], 'i': [8, 9, 10]}
반대로 아래와 같이 Dict
자료형을 바로 JSON으로 저장하는 것도 가능하다.
from addict import Dict
output = Dict()
output.a = 1
output.b = 2
with open('json_example.json', 'w') as outfile:
json.dump(obj=output, fp=outfile, indent=2)