collections.Counter(), defaultdict()

13497 단어 pythonpython

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, '개 입니다.')


좋은 웹페이지 즐겨찾기