setdefault 설명, 사용 예시 (Python)

이태혁·2020년 11월 6일
0

🦊 기본 문법

인자 1개

test1 = {1 : 'a', 2 : 'b'}
print(test1)
test1.setdefault(3)
print(test1)

---------------
> {1: 'a', 2: 'b'}
> {1: 'a', 2: 'b', 3: None}

딕셔너리의 키값을 추가할 수 있다. 이때 value는 None으로 설정

인자 2개

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를 사용하면 그 부분이 쉽게 해결된다.

setdefault 사용하지 않는 경우

test4 = {}
if not 'key' in test4:
	test4['key'] = []
test4['key'].append('a')
print(test4)
----------
> {'key': ['a']}

if문으로 해당키가 없을 때만 초기화

setdefault 사용하는 경우

test5 = {}
test5.setdefault('key', [])
test5['key'].append('a')
print(test5)
--------------
>{'key': ['a']}

if문이 필요없다.

다만 setdefault를 사용하지 않는 경우가 가독성이 좀 더 좋은것 같아 아직까지는 if문을 쓰는 쪽이 좀더 끌린다.

profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.

0개의 댓글