-
collections - counter파이썬 Study/라이브러리 2021. 3. 17. 00:57
참조 :
https://excelsior-cjh.tistory.com/94
■ Counter
1) 정의 :
iterable을 더 잘게 쪼개진 객체로 돌려줌 (dictionary와 유사하게)
collections.Counter( <iterable> )
<iterable> === { 문자열, list, dict, tuple }
2) 매써드 들
(a) update( )
- 정의 :
set, dictionary와 유사, 여러개 한꺼번에 업데이트 가능
- 예시 :
import collections # 문자열 a = collections.Counter() a.update("abcdefg") print(a) >>> Counter({'f': 1, 'e': 1, 'b': 1, 'g': 1, 'c': 1, 'a': 1, 'd': 1}) # 딕셔너리 a.update({'f':3, 'e':2}) print(a) >>> Counter({'f': 4, 'e': 3, 'b': 1, 'g': 1, 'c': 1, 'a': 1, 'd': 1})
(b) element( )
- 정의 :
입력 된 값을 포함하는 collection counter 객체의 내부 값을 풀어서 반환
형변환 해야 접근 가능
- 예시 :
import collections # 문자열 c = collections.Counter("Hello Python") print(list(c.elements())) >>> ['n', 'h', 'l', 'l', 't', 'H', 'e', 'o', 'o', ' ', 'y', 'P'] print(sorted(c.elements())) >>> [' ', 'H', 'P', 'e', 'h', 'l', 'l', 'n', 'o', 'o', 't', 'y'] # 사전식 정렬 # dictionary 형태(대입...?) c2 = collections.Counter(a=4, b=2, c=0, d=-2) print(sorted(c.elements())) >>> ['a', 'a', 'a', 'a', 'b', 'b']
(c) most_common( )
- 정의 :
객체 안의 값들 중, frequency 가 높은 순으로 반환
- 예시 :
import collections c2 = collections.Counter('apple, orange, grape') print(c2.most_common(3)) >>> [('a', 3), ('p', 3), ('e', 3)] print(c2.most_common()) >>> [('a', 3), ('p', 3), ('e', 3), ('g', 2), (',', 2), ('r', 2), (' ', 2), ('n', 1), ('l', 1), ('o', 1)]
■ 산술 집합 연산
- set 에서도 거의 비슷한 집합 연산 가능
1) 덧셈
import collections a = collections.Counter(['a', 'b', 'c', 'b', 'd', 'a']) b = collections.Counter('aaeroplane') print(a) print(b) print(a+b) >>> Counter({'b': 2, 'a': 2, 'd': 1, 'c': 1}) Counter({'a': 3, 'e': 2, 'n': 1, 'r': 1, 'o': 1, 'p': 1, 'l': 1}) Counter({'a': 5, 'b': 2, 'e': 2, 'n': 1, 'l': 1, 'd': 1, 'r': 1, 'o': 1, 'p': 1, 'c': 1})
2) 뺄셈
- 음수값 무시됨
import collections a = collections.Counter('aabbccdd') b = collections.Counter('abbbce') print(a-b) >>> Counter({'d': 2, 'c': 1, 'b': 1, 'a': 1}) # b Counter에 포함 된 e는 없어짐
3) subtract / 뺄셈과 결과가 다름
import collections c3 = collections.Counter('hello python') c4 = collections.Counter('i love python') c3.subtract(c4) print(c3) >>> Counter({'l': 1, 'h': 1, 'n': 0, 't': 0, 'p': 0, 'e': 0, 'o': 0, 'y': 0, 'i': -1, 'v': -1, ' ': -1}) c = Counter(a=4, b=2, c=0, d=-2) d = Counter(a=1, b=2, c=3, d=4) c.subtract(d) print(c) >>> Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
4) 교집합 / 합집합
import collections a = collections.Counter('aabbccdd') b = collections.Counter('aabbbce') print(a & b) >>> Counter({'b': 2, 'a': 2, 'c': 1}) print(a | b) >>> Counter({'b': 3, 'c': 2, 'd': 2, 'a': 2, 'e': 1})
반응형