파이썬에서 사용하는 데이터 타입 중에는 "dictionary(딕셔너리)"라는 데이터 타입이 있습니다.
우리가 사전을 볼 때 단어를 찾으면 단어의 의미가 사전에 적혀있는 것과 동일한 형태의 데이터 구조라고 생각하면 됩니다.
다음은 과일이라는 key값을 찾아가면 가격이라는 value를 담고 있는 딕셔너리의 예제입니다.
fruits = {"apple" : 1000, "banana" : 1500, "strawberry" : 500}
이번 글에서는 딕셔너리의 default 값에 대하여 간단하게 정리하겠습니다!
딕셔너리를 사용하여 코드를 짜다보면 종종 딕셔너리에서 값을 가져올 때 해당하는 키 값이 딕셔너리에 없는 경우가 있습니다.
없는 키에 접근을 하면 당연히 value를 불러 올 수 없습니다.
그렇다면 딕셔너리에 없는 값에 대해서는 default값을 따로 설정할 수 없을까요?
바로 get()함수를 써주면 됩니다!
딕셔너리에서 제공하는 get은 기본적으로 딕셔너리.get(key)의 형식으로 사용되며 해당하는 키 값의 value를 리턴해주는 기능입니다.
위의 fruits 딕셔너리를 예로 들자면 다음과 같이 사용할 수 있습니다.
>>> fruits.get('apple')
1000
이때 get에 default 인자 값을 같이 넣어준다면 딕셔너리에 없는 key가 들어왔을 때 default 값을 반환해줍니다.
>>> fruits.get("tomato", 0)
0
아주 간단하죠?!
또 다른 방법은 없을까요?
파이썬 내장 라이브러리 collections에서는 defaultdict이라는 기능을 제공해줍니다!
defaultdict은 딕셔너리의 키값에 default값을 미리 지정해주는 것입니다.
없는 키에 접근하려고할때 자동으로 딕셔너리에 default값을 가진 key : value를 추가해줍니다!
>>> from collections import defaultdict
>>> fruits = defaultdict(int)
>>> fruits
defaultdict(<class 'int'>, {})
>>> fruits['apple']
0
>>> fruits['banana'] = 1500
>>> fruits
defaultdict(<class 'int'>, {'apple': 0, 'banana': 1500})
defaultdict를 처음 선언할 때 어떤 데이터 타입을 default 값으로 줄 것인지 설정할 수 있습니다!
int 뿐 아니라 list, set과 같은 데이터 타입 모두 가능하답니다!
>>> like_fruits = defaultdict(list)
>>> like_fruits
defaultdict(<class 'list'>, {})
>>> like_fruits['자윤'].append('복숭아')
>>> like_fruits['브라운'].append('바나나')
>>> like_fruits['어피치'].append('수박')
>>> like_fruits['자윤'].append('자두')
>>> like_fruits
defaultdict(<class 'list'>, {'자윤': ['복숭아', '자두'], '브라운': ['바나나'], '어피치': ['수박']})
따로 딕셔너리에 해당하는 키 값이 없으면 빈 리스트를 생성하고 값을 넣는다와 같은 조건을 따로 체크할 필요가 없으니 훨씬 간편하겠죠?!