test1 = {1 : 'a', 2 : 'b'}
print(test1)
test1.setdefault(3)
print(test1)
---------------
> {1: 'a', 2: 'b'}
> {1: 'a', 2: 'b', 3: None}
딕셔너리의 키값을 추가할 수 있다. 이때 value는 None으로 설정
test2 = {1 : 'a', 2 : 'b'}
print(test2)
test2.setdefault(3, 'c')
print(test2)
----------
> {1: 'a', 2: 'b'}
> {1: 'a', 2: 'b', 3: 'c'}
딕셔너리안에 키,밸류쌍을 추가할 수 있다.
인자1(키): 인자2(벨류) 형식이다
test3 = {1 : 'a', 2 : 'b', 3: 'ddd'}
print(test3)
test3.setdefault(3, 'c')
print(test3)
----------------
> {1: 'a', 2: 'b', 3: 'ddd'}
> {1: 'a', 2: 'b', 3: 'ddd'}
인자1에 해당하는 키가 이미 딕셔너리안에 있는 경우 아무 일이 일어나지 않는다.
코딩 테스트에서 반복문을 돌면서 딕셔너리를 만들어나가는 구조가 자주 등장한다.
이때 해당 키가 딕셔너리에 있는지 없는지 검사하면서 해당 키를 초기화하곤 하는데 setdefault를 사용하면 그 부분이 쉽게 해결된다.
test4 = {}
if not 'key' in test4:
test4['key'] = []
test4['key'].append('a')
print(test4)
----------
> {'key': ['a']}
if문으로 해당키가 없을 때만 초기화
test5 = {}
test5.setdefault('key', [])
test5['key'].append('a')
print(test5)
--------------
>{'key': ['a']}
if문이 필요없다.
다만 setdefault를 사용하지 않는 경우가 가독성이 좀 더 좋은것 같아 아직까지는 if문을 쓰는 쪽이 좀더 끌린다.