collections.Counter(), defaultdict()
collections.Counter()
-
컨테이너안의 데이터들의 개수를 셀 때 collections모듈의 Counter를 사용한다.
-
'요소가 딕셔너리 키'로 저장되고 '개수가 딕셔너리값'으로 저장되는 컬렉션이다.
-
딕셔너리 자료형이다.
✔ type은 Dictionary 자료형이다.
tmp = ['kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']
ex = collections.Counter(tmp)
print(ex)
✔ .keys() & .values()
print(ex.keys())
print(ex.values())
✔ .items()
import collections
tmp = "ABCDEEEEEFFFGG"
ex = collections.Counter(tmp)
for key, value in ex.items():
print(key, '가', value, '개 있음')
✔ 합집합(|)과 교집합(&) 연산이 가능하다.
import collections
ex1 = collections.Counter('ABCDEFGGGGG')
ex2 = collections.Counter('ABCDEFG')
print(ex1 & ex2)
print(ex1 | ex2)
✔ 없는 key를 조회하면 0이 출력된다.
import collections
a = 'aaabcc'
sh = collections.Counter(a)
sh['a'] -= 1
print(sh['a']) # 2 출력
print(sh['x']) # 0 출력
collections.defaultdict()
-
딕셔너리에서 존재하지 않는 키를 조회할 경우 KeyError exception이 난다.
-
하지만 defaultdict는 존재하지 않는 키를 조회하면 에러가 나지 않고 설정한 디폴트 값을 기준으로 해당 키에 대한 아이템을 딕셔너리에 추가해준다.
-
인자를 int, list, set 등으로 지정할 수 있다.
-
딕셔너리 자료형이다.
✔ defaultdict의 first argument로 default_factory를 제공하면 된다.(디폴트값을 5로 설정)
from collections import defaultdict
def default_factory():
return 5
tmp = defaultdict(default_factory)
tmp['아이유'] = 10
tmp['카리나'] = 2
print(tmp)
print(tmp['손예진'])
print(tmp)
✔ 디폴트값을 0으로 하고 싶다면 default_factory로 int를 넘겨주면 된다.
from collections import defaultdict
tmp = defaultdict(int)
tmp['명수'] = 10
tmp['재석'] = 2
print(tmp)
print(tmp['호동'])
print(tmp
✔ 인자값을 list로 줬을 때
import collections
aaa = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
tmp = collections.defaultdict(list)
for key, value in aaa:
tmp[key].append(value)
print(tmp)
✔ 문자열 개수 세기
import collections
aaa = 'aaabbcccccdeee'
sH = collections.defaultdict(int)
for x in aaa:
sH[x] += 1
for kk in sH.keys():
print(kk)
print('---')
for jj in sH.values():
print(jj)
print('---')
for key, value in sH.items():
print(key, '는', value, '개 입니다.')
Author And Source
이 문제에 관하여(collections.Counter(), defaultdict()), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaeyoung9849/collections.Counter-defaultdict저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)