출처 : 윤성우의 열혈 파이썬 : 중급
16. dict & defaultdict
키가 존재할 때와 존재하지 않을 때
d = {'red': 3, 'white': 2, 'blue': 4}
d['red'] = 1 # 키 'red'의 값을 1로 변경
d = {'red': 3, 'white': 2}
d['red'] = 1 # 'red' : 1 추가
저장되어 있는 값 참조
d = {'red': 3, 'white': 2, 'blue': 4}
d['red'] += 1 # 키 'red'의 값을 1 증가
d = {'red': 3, 'white': 2}
d['red'] += 1 # 해당 키가 존재하지 않음. error
# 키의 존재 여부에 따라 실행 코드를 구분할 필요
s = 'robbot'
d = {}
for k in s:
if k in d:
d[k] += 1
else:
d[k] = 1
setdefault 메소드
s = 'robbot'
d = {}
for k in s:
d[k] = d.setdefault(k, 0) + 1
- d.setdefault(k, v)
- k에 해당하는 키가 있을 때, 그 키의 값을 반환한다
- k에 해당하는 키가 없을 때, 딕셔너리에 k:v 저장하고 v를 반환한다
- setdefault 메소드를 사용하면 if ~ else를 넣어서 복잡해질 수 있는 코드를 간결하게 구성할 수 있다
defaultdict
from collections import defaultdict
s = 'robbot'
d = defaultdict(int)
for k in s:
d[k] += 1
- defaultdict 함수는 디폴트 값을 갖는 딕셔너리를 생성해 반환한다
- 찾는 키가 없으면 예외를 발생시키지 않고 해당 키를 추가하되, 미리 등록해 놓은 함수가 반환하는 디폴트 값을 그 키의 값으로 저장
- 디폴트 값은 키를 저장하는 경우에 사용되는 기본 값을 의미한다
default 값
n1 = int('36')
print(n1) # 36
n2 = int()
print(n2) # 0
def ret_zero():
return 0
d = defaultdict(ret_zero)
print(d['a']) # 0
d = defaultdict(lambda: 7)
print(d['z']) # 7
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 18. 자료형 분류와 set & frozenset (0) | 2020.12.24 |
---|---|
[윤성우의 열혈 파이썬 중급편] 17. dict & OrderedDict (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 15. 함수 호출과 매개변수 선언에 있어서 *와 **의 사용 규칙 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 14. dict의 루핑 기술과 컴프리헨션 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 13. dict의 생성과 zip (0) | 2020.12.24 |