간단한 라이브러리를 사용하여 딕셔너리의 개수 세기
문자열에서 사용되는 알파벳의 개수를 세거나 해시 문제를 풀 때 유용하니 기억하자
참고 : https://docs.python.org/3/library/collections.html#collections.Counter
Collections 라이브러리
- 파이썬의 list, tuple, dict에서 확장된 기능 제공
- import collections : collections.Counter로 사용
- from collections import Counter : Counter로 바로 사용 가능
# Collections
import collections
from collections import Counter
Counter (딕셔너리 개수 세기)
- dict의 subclass
- 데이터의 개수를 세서 반환 (데이터가 key, 개수가 value)
- 없는 key는 에러가 아닌 0으로 반환
# Counter
from collections import Counter
mystr = 'hellokrapeun'
mycount = Counter(mystr)
print(mycount)
# Counter(['e' : 2, 'l' : 2, 'h' : 1, 'o' : 1, 'k' : 1, 'r' : 1, 'a' : 1, 'p' : 1, 'u' : 1, 'n' : 1])
print(mycount('z'))
# 0
1. Counter - 계산 연산자
- 두 개의 객체를 연산
- 비교 연산자 (equality / inclusion) : 비교 후 True/False 반환
- += / -= (add / subtract) : 두 값을 더하거나 뺌 (음수가 되면 무시)
- &= (intersection) : 최솟값 반환 (교집합)
- |= (union) : 최댓값 반환 (합집합)
# Counter - 계산 연산자 (1)
mycnt1 = Counter(a = 3, b = 1)
mycnt2 = Counter(a = 1, b = 2)
print(mycnt1 == mycnt2) # False
print(mycnt1 <= mycnt2) # False
mycnt1 += mycnt2 # mycnt1 = Counter({'a' : 4, 'b' : 3})
mycnt1 -= mycnt2 # mycnt1 = Counter({'a' : 2})
mycnt1 &= mycnt2 # mycnt1 = Counter({'a' : 1, 'b' : 1})
mycnt1 |= mycnt2 # mycnt1 = Counter({'a' : 3, 'b' : 2})
- 단항 연산자 (+, -) : value에 +/-를 붙임
- 음수인 값은 무시
# Counter - 계산 연산자 (2)
mycnt = Counter(a = 2, b = -4)
+mycnt # Count({'a' : 2}) --> (a = 2, b = -4)이므로 b는 무시
-mycnt # Count({'b' : 4}) --> (a = -2, b = 4)이므로 a는 무시
2. Counter - elements()
- dict의 subclass
- Counter(list).elements() : 요소들 반환
- 0보다 작거나 같으면 무시
# Counter - elements
from collections import Counter
mycnt = Counter(a = 4, b = 2, c = 0, d = -2)
sorted(c.elements())
# [a, a, a, a, b, b]
3. Counter - most_common()
- 가장 많이 사용된 순서대로 정렬하여 tuple 형태로 반환 (동일한 요소는 나온 순서대로)
- Counter(list).most_common(n) : 상위 n개 반환
# Counter - most_common
from collections import Counter
mystr = 'hellokrapeun'
mycount = Counter(mystr)
print(mycount.most_common())
# Counter(['e' : 2, 'l' : 2, 'h' : 1, 'o' : 1, 'k' : 1, 'r' : 1, 'a' : 1, 'p' : 1, 'u' : 1, 'n' : 1])
print(mycount.most_common(2))
# Counter(('e', 2), ('l', 2))
4. Counter - subtract()
- 요소들의 뺄셈을 반환
- Counter(list).subtract(n) : 뺄셈 결과 반환, 음수도 가능
# Counter - subtract
from collections import Counter
mystr1 = 'hello'
mystr2 = 'hibye'
mycount1 = Counter(mystr1)
mycount2 = Counter(mystr2)
mycount1.subtract(mycount2)
print(mycount1)
# Counter(['h' : 0, 'e' : 0, 'l' : 2, 'o' : 1, 'i' : -1, 'b' : -1, 'y' : 1])
5. Counter - total()
- 요소의 총 개수를 반환
- Counter(list).total() : 총 개수
# Counter - total
from collections import Counter
mystr = 'hellokrapeun'
mycount = Counter(mystr)
print(mycount.total())
# 12
'Programming > - Python' 카테고리의 다른 글
[Python] Set (집합) : 중복 없는 자료형 (0) | 2022.05.25 |
---|---|
[Python] 반복문 사용 : range / enumerate (0) | 2022.05.12 |
[Python] 리스트 정리 (index / append / del / insert / remove) (0) | 2022.04.22 |
[Python] map 함수 사용법 (0) | 2022.04.19 |
[Python] 문자열 / 리스트 (list / split / join) (0) | 2022.04.15 |
댓글