반응형
nested json을 처리하다 보면 오브젝트로 처리하기 보다 스트링으로 처리하는게 편한 경우가 있습니다.
그럴 때 플랫화 해서 사용하면 좋습니다.
저는 주로 spark에서 구조가 복잡한 json의 leaf들의 통계를 구할 때 많이 사용합니다.
원본:
{
"a": {
"b": {
"c": 1
},
"d": 0
}
}
플랫화 결과:
{
"a.b.c": 1,
"a.d": 0
}
플랫화 함수 코드:
def flatten_json(y):
out = {}
def flatten(x, name =''):
# If the Nested key-value
# pair is of dict type
deli = '.'
if type(x) is dict:
for a in x:
flatten(x[a], name + a + deli)
# If the Nested key-value
# pair is of list type
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + deli)
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
반응형
'Computer Science > Python' 카테고리의 다른 글
[Django] no such table 에러 해결법 (0) | 2022.08.15 |
---|---|
[Python] 파이썬 XML을 사전(dict/json)으로 변환하는 방법 (xmltodict) (0) | 2022.07.27 |
[python] poetry 설치 (0) | 2022.07.21 |
[Python] pypi(Python package Index) 란? (0) | 2022.07.21 |
[Python] 파이썬 가상환경(pipenv) 설치 및 사용법 (0) | 2022.07.18 |