collections모듈에도 여러 함수가 있지만
자주 사용되는 함수 위주로 기록합니다✍️
1. Counter함수란?
컨테이너에 동일한 값의 자료가 몇개인지를 파악하는데 사용하는 클래스다.
개수를 세는 것에 특화된 함수!
2. 사용법
collections모듈은 파이썬을 설치할 때 자동으로 설치되는 기본 라이브러리이다.
from collections import Counter
lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee']
print(Counter(lst))
'''
결과
Counter({'aa': 2, 'cc': 1, 'dd': 1, 'bb': 1, 'ee': 1})
'''
Counter 클래스는 파이썬의 기본 자료구조인 사전(dictionary)를 확장하고 있기 때문에,
딕셔너리에서 제공하는 API를 그대로 다 사용할 수가 있습니다.
3. Counter의 메소드
1) update()
Counter의 값을 갱신하는 것을 의미
딕셔너리의 update와 비슷하지만 입력값을 문자열 형태로도 입력 가능
from collections import Counter
a = Counter()
print(a)
a.update("abcdefg")
print(a)
'''
결과
Counter()
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})
'''
2) elements()
입력된 값의 요소에 해당하는 값을 풀어서 반환
대소문자를 구분하며, sorted()를 이용하여 정렬이 가능
from collections import Counter
c = Counter("Hello Python")
print(list(c.elements()))
print(sorted(c.elements()))
'''
결과
['n', 'h', 'l', 'l', 't', 'H', 'e', 'o', 'o', ' ', 'y', 'P']
[' ', 'H', 'P', 'e', 'h', 'l', 'l', 'n', 'o', 'o', 't', 'y']
'''
3) most_common(n)
딕셔너리의 입력된 값의 요소들 중 빈도수(frequency)가 높은 순으로
상위 n개를 리스트(list) 안의 투플(tuple) 형태로 반환한다.
n을 입력하지 않은 경우, 요소 전체를 [('값', 개수)]의 형태로 반환한다.
from collections import Counter
c2 = Counter('apple, orange, grape')
print(c2.most_common())
print(c2.most_common(3))
'''
결과
[('a', 3), ('p', 3), ('e', 3), ('g', 2), (',', 2), ('r', 2), (' ', 2), ('n', 1), ('l', 1), ('o', 1)]
[('a', 3), ('p', 3), ('e', 3)]
'''
4) subtract()
말 그대로 요소를 빼는것을 의미
다만, 요소가 없는 경우는 음수의 값이 출력
4. Counter를 이용한 연산
collections.Counter()는 산술/집합 연산이 가능하다.
1) 덧셈
from collectios import Counter
a = Counter(['a', 'b', 'c', 'b', 'd', 'a'])
b = 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) 뺄셈
음수값은 출력하지 않는다.
from collections import Counter
a = Counter('aabbccdd')
b = Counter('abbbce')
print(a-b)
'''
결과
Counter({'d': 2, 'c': 1, 'b': 1, 'a': 1})
'''
3) 교집합(&)과 합집합(|)
출력값은 {값 : 개수}의 딕셔너리 형태로 반환
from collections import Counter
a = Counter('aabbccdd')
b = 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})
'''
'Language > Python' 카테고리의 다른 글
[Python] 정규표현식(Regular Expression) (0) | 2020.01.05 |
---|---|
[Python] 리스트, 문자열 변환 (0) | 2019.12.30 |
[Python] 집합 자료형 (set) (0) | 2019.12.29 |
[Python] 리스트 인덱스와 값 동시 접근 (enumerate) (0) | 2019.12.29 |
[Python] 문자열 나누기 (split함수) (0) | 2019.12.29 |