반응형
docs.python.org/3/library/collections.html#collections.Counter
알고리즘 풀 때 유용한 파이썬의 Counter 객체를 정리해보려 한다.
- Counter는 dict의 서브클래스이다. 이름에서 알 수 있듯이 요소의 갯수를 세어준다.
- key 와 value 형태로 저장된다. key는 요소이고, value는 요소의 갯수이다.
- 덧셈 뺄셈 연산이 가능하다.
객체 생성방법
>>> c = Counter("abcde") #문자열을 넣어주면 문자요소로 Counting
>>> c
Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1})
>>> c = Counter({'red':4,'blue':2}) #dict객체를 넣어주면 dict 그대로 count를 만들어준다
>>> c
Counter({'red': 4, 'blue': 2})
>>> c = Counter({'red':'a','blue':'b'}) #value를 문자로 넣어봤는데 문자그대로 나온다... 이렇게 쓸일 없으니 주의
>>> c
Counter({'blue': 'b', 'red': 'a'})
>>> c=Counter(cats=4,dogs=8) #이렇게 넣어주니 알아서 keyword로 변환해줌
>>> c
Counter({'dogs': 8, 'cats': 4})
>>> c = Counter(['eggs','ham']) #리스트를 넣어주면 리스트 요소를 카운팅해줌
>>> c
Counter({'eggs': 1, 'ham': 1})
요소 찾기
dictionary 자료형과 방법이 똑같다. 값이 있을경우 value를 리턴해주며 없을경우 0을 리턴한다.
>>> c = Counter(['eggs','ham'])
>>> c
Counter({'eggs': 1, 'ham': 1})
>>> c['eggs']
1
>>> c['beaf']
0
요소 지우기
값을 0으로 만들어준다고 지워지지 않는다. del을 이용하여 지워주자
>>> c['eggs'] = 0
>>> c
Counter({'ham': 1, 'eggs': 0})
>>> del c['eggs']
>>> c
Counter({'ham': 1})
사칙연산
+ : 합집합
- : 차집합
& : 교집합에서 min value
| : 교집합에서 max value
Counter({'a': 3, 'b': 2})
>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d
Counter({'a': 4, 'b': 3})
>>> c - d
Counter({'a': 2}) // 양수값만 살아남는다
>>> c & d
Counter({'a': 1, 'b': 1}) // min(c[x],d[x]) 두 값중 작은값만 살아남는다
>>> c | d
Counter({'a': 3, 'b': 2}) // max(c[x],d[x]) 두 값중 큰값만 살아남는다
most_common 함수
가장 많이 나오는 요소들을 반환해준다. 인풋으로 주는 숫자는 원하는 요소의 갯수이다.
Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]
>>> Counter('abracadabra').most_common(1)
[('a', 5)]
>>> Counter('abracadabra').most_common(2)
[('a', 5), ('b', 2)]
반응형
'Python > 알고리즘팁' 카테고리의 다른 글
파이썬 이중 리스트 순회하며 특정요소 꺼내기 (0) | 2021.03.17 |
---|---|
파이썬 딕셔너리 순회하기 (0) | 2021.03.17 |
list indices must be integers or slices, not float (0) | 2021.03.11 |
파이썬 print 줄바꿈 없이 출력하기 (0) | 2021.03.11 |
RecursionError: maximum recursion depth exceeded while calling a Python object (0) | 2021.03.11 |
댓글