728x90
defaultdict(자료형)
defaultdict은 딕셔너리를 만들 수 있는 dict의 서브클래스로 자료형을 기본값으로 dict 객체를 생성한다.
자료형에는 int, float, list, set 등 다양한 값이 들어갈 수 있음
외부함수이기 때문에 import해서 사용함
from collections import defaultdict
key = ['a', 'b', 'c', 'd']
int_d = defaultdict(int)
for k in key:
int_d[k]
print(int_d)
defaultdict(<class 'int'>, {'a': 0, 'b': 0, 'c': 0, 'd': 0})
from collections import defaultdict
key = ['a', 'b', 'c', 'd']
int_d = defaultdict(list)
for k in key:
int_d[k]
print(int_d)
defaultdict(<class 'list'>, {'a': [], 'b': [], 'c': [], 'd': []})
from collections import defaultdict
key = ['a', 'b', 'c', 'd']
int_d = defaultdict(list)
for k in key:
int_d[k]
int_d['a'] = 'Python'
int_d['b'] = 5000
print(int_d)
defaultdict(<class 'list'>, {'a': 'Python', 'b': 5000, 'c': [], 'd': []})
이다음에는 평소 dict 쓰듯 사용하면 된다.
defaultdict 사용 이유
dict에 값을 지정할 때 dict[key]=value 이런 식으로 지정하는데 반복문을 사용하여 list의 값들을 한번에 dict에 저장해야 할 때가 있다.
for i, (g, p) in enumerate(zip(genres, plays)):
if gen_plays.get(g) == None:
gen_plays[g] = [p,(p, i)]
else:
gen_plays[g][0] += p
gen_plays[g].append((p,i))
d = {e:[] for e in set(genres)}
그런 경우에 초기에 dict에는 값이 저장되지 않았기 때문에 += 연산을 진행할 수 없고 에러가 발생한다.
그러므로 .get()을 이용하여 초기에 값을 선언해줘야한다.
dafaultdict을 사용하면 예외처리 없이 코드를 작성할 수 있어 새로운 값이 들어와도 바로 적용가능함
728x90
'Python > 이론, 기초' 카테고리의 다른 글
리스트형태의 문자열을 리스트로 만들기 (0) | 2024.01.16 |
---|---|
[Python] 파이썬 단계적 함수, 함수 안에 함수 선언 (0) | 2023.05.04 |
[Python] 리스트에서 원하는 원소 추출, 리스트 필터링 (0) | 2023.05.02 |
[Python] map에서 lambda 쓰기 (0) | 2023.05.01 |
[Python] 딕셔너리 정렬하기 (0) | 2023.05.01 |