defaultdict() : 처음 키를 저장할때 값을 주지 않으면 해당 키에 대한 값을 디폴트 값으로 지정하는 의미이다.
list_dict = defaultdict(list)
>>> list_dict['key1']
[] # 값을 지정하지 않으면 빈 리스트로 초기화
>>> list_dict['key2'] = 'test' # 값을 지정하면 해당값으로 초기화
set_dict = defaultdict(set)
>>> set_dict['key1']
set() # 값을 지정하지 않으면 빈 리스트로 초기화
>>>set_dict['key2']='test' # 값을 지정하면 해당값으로 초기화
📍 그러면 언제 defaultdict()를 사용하는 것이 좋을까?
키의 개수를 세야하는 상황 혹은 리스트나 셋의 항목을 정리해야하는 상황.
letters = 'youcandoit'
letters_dict = defaultdict(int)
for k in letters:
letters_dict[k] += 1 # 키에 대한 값이 없으면 값을 0으로 초기화
print(letters_dict)
---> 출력 결과
defaultdict(<class 'int'>, {'y': 1, 'o': 2, 'u': 1, 'c': 1, 'a': 1, 'n': 1, 'd': 1, 'i': 1, 't': 1})
name_list = [('kim','sungsu'), ('kang','hodong'), ('park','jisung'),('kim','yuna'), ('park','chanho'),('kang','hodong')]
ndict = defaultdict(list)
for k,v in name_list:
ndict[k].append(v) # 값이 리스트이기 때문에 append()를 이용해서 추가
print(ndict)
---> 출력 결과
defaultdict(<class 'list'>, {'kim': ['sungsu', 'yuna'], 'kang': ['hodong', 'hodong'], 'park': ['jisung', 'chanho']})