[Python] defaultdict 문법 정리

2022. 9. 11. 09:22·Programming Languages/Python
목차
  1. defaultdict 
728x90

defaultdict 

Python의 collections 모듈에 defaultdict이 있다.

코딩테스트 풀때, 딕셔너리가 필요한 문제 풀 때 굉장히 편리하다 
일반 딕셔너리는 key 값을 미리 넣어주지 않았다면 value에 대한 연산을 할 때 KeyError 에러가 난다. 

words = ["apple", "apple", "iphone", "mac", "mac", "mac"]
dict_temp = {}
dict_temp[words[0]] += 1


그렇다보니 defaultdict을 모르기 이전에는 이런식으로 코드를 짠 것 같다 

for word in words:
    if word in dict_temp.keys():
        dict_temp[word] += 1
    else:
        dict_temp[word] = 1

이런 번거로움을 덜어주는 게 바로 defaultdict인데, key 호출과 동시에 미리 지정한 기본값이 할당된다. 

words = ["apple", "apple", "iphone", "mac", "mac", "mac"]
d_dict = collections.defaultdict(int) # int type으로 초기화
d_dict[words[0]] += 1
print(d_dict)

기존에 없던 key를 호출할 때 문제없이 연산이 진행되는 걸 확인할 수 있다. 이 경우 int로 초기화 했을 때, 0이 default값으로 저장된다. 
int이외의 다른 type도 가능하다 

예를 들어서 list type의 경우

d_dict = collections.defaultdict(list) # int type으로 초기화
d_dict["apple"].append(1)
print(d_dict)

defaultdict(<class 'list'>, {'apple': [1]})

이렇게 잘 들어간다 !!! 


lambda 식을 이용하여 defaultdict을 초기화할 수도 있다. 

d_dict = collections.defaultdict(lambda: "hello") # int type으로 초기화
print(d_dict[1])

hello

728x90

'Programming Languages > Python' 카테고리의 다른 글

Python k 진수로 바꾸기  (0) 2022.09.30
python re.sub - 정규화표현식으로 문자열 바꿔주기  (1) 2022.09.11
Python 다익스트라 최단경로 알고리즘  (0) 2022.01.31
python bisect, bisect_left, bisect_right  (0) 2022.01.25
[Python] 파이썬 join 함수 (파이썬 문자열 리스트 합치기)  (0) 2022.01.22
  1. defaultdict 
'Programming Languages/Python' 카테고리의 다른 글
  • Python k 진수로 바꾸기
  • python re.sub - 정규화표현식으로 문자열 바꿔주기
  • Python 다익스트라 최단경로 알고리즘
  • python bisect, bisect_left, bisect_right
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (612)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (29)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (4)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 클라우드
  • 프로그래머스
  • 알고리즘
  • 데이터브릭스
  • 파이썬
  • 백트래킹
  • 운영체제
  • 쿠버네티스
  • 카카오코딩테스트
  • python
  • Kubernetes
  • Leetcode
  • 백준
  • dfs
  • EC2
  • dp
  • SPARK
  • 스파크
  • ansible
  • 빅데이터
  • 리눅스
  • 데이터엔지니어링
  • linux
  • AWS
  • BFS
  • 코딩테스트
  • Databricks
  • docker
  • 데이터엔지니어
  • Swift

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[Python] defaultdict 문법 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.