from collections import defaultdict
#defaultdict은 기본값을 지정한 딕셔너리
#키가 존재하지 않을 때, 에러를 내지 않고 키: 기본값 만듬
#이런 비슷한 역할 하는것이 일반적인 딕셔너리의 함수에 있음
# -> 딕셔너리.get(key, 키가 없을때 값) / 딕셔너리.setdefault(key, 값)
#기본값이 int형 ---------------------------------------------------------
dic1 = defaultdict(int)
for key in ['a', 'b', 'c', 'a', 'd', 'c']:
dic1[key] += 1
print(dic1) #defaultdict(<class 'int'>, {'a': 2, 'b': 1, 'c': 2, 'd': 1})
#기본값이 list형 ---------------------------------------------------------
dic2 = defaultdict(list)
name_list = [('kang', 'minhee'), ('kang', 'minji'), ('kim', 'yuna'), ('park', 'jisung')]
for first, second in name_list:
dic2[first].append(second)
print(dic2) #defaultdict(<class 'list'>, {'kang': ['minhee', 'minji'], 'kim': ['yuna'], 'park': ['jisung']})
#기본값이 set형 ---------------------------------------------------------
dic3 = defaultdict(set)
name_list = [('kang', 'minhee'), ('kang', 'minji'), ('kim', 'yuna'), ('park', 'jisung')]
for first, second in name_list:
dic3[first].add(second) #set은 add()로 원소 추가
print(dic3) #defaultdict(<class 'set'>, {'kang': {'minhee', 'minji'}, 'kim': {'yuna'}, 'park': {'jisung'}})
#기본값을 원하는값으로 지정 ---------------------------------------------------------
dic4 = defaultdict(lambda: 3)
for key in ['a', 'b', 'c', 'a', 'd', 'c']:
dic4[key] += 1
print(dic4) #defaultdict(<function <lambda> at 0x105455430>, {'a': 5, 'b': 4, 'c': 5, 'd': 4})