dict 내부의 리스트에 데이터 추가하는 3가지 방법

Hyunsoo Lim·2022년 10월 12일
0

파이썬 팁 정리

목록 보기
2/2
post-thumbnail

출처: 전문가를 위한 파이썬 p115
3.3.1 존재하지 않는 키를 setdefault()로 처리하기

데이터의 구조를 변경하다보면 dictionary 의 특정 key의 list 형 value에 값을 추가하는 경우가 많다.

1. 단순 무식

여태 아래와 같이 짰는데, 새로운 방법을 안 상태에서 보니까 뭔가 부끄럽다(...)

result = {}
# data_list: [{}, {}, ...]
for d_dict in data_list:
    for k, v in d_dict.items():
        if not k in result.keys():
            result[k] = []
        result[k].append(v)

2. get 이용

result = {}
# data_list: [{}, {}, ...]
for d_dict in data_list:
    for k, v in d_dict.items():
        value_list = result.get(k, [])
        value_list.append(v)
        result[k] = value_list

조건문 처리를 안 하는지라 좀 더 깔끔해진 것도 같은데, 코드 라인 수도 1번과 동일하고, result.get에서 한 번, result[k] 에서 한 번, result 라는 dict를 총 두 번 검색하는 방법이라 효율적이지 않다.

3. setdefault 사용

result = {}
# data_list: [{}, {}, ...]
for d_dict in data_list:
    for k, v in d_dict.items():
        result.setdefault(k, []).append(k)

세 줄짜리가 한 줄로 줄어들었다! 가독성도 좋아졌고, result 란 dict를 한 번만 조회하게 됨으로써 성능면에서도 효율적이다.

profile
잡식형 괴발자

0개의 댓글