Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 6566
- pwable.kr
- 백준
- Drive-By-Download
- 10814
- UNIQUE constraint failed
- java.lang.IllegalStateException
- 코틀린
- cmd1
- python
- 나이순 정렬
- 클라우드가 뭐야
- 파이썬
- 애너그램 그룹
- tlqkf
- Docker
- Couldn't read row 0
- col -1 from CursorWindow
- pwnable.kr
- kotlin
- 액션바 필요없숴
- pwnable
- 쏘큩
- 포너블
- 블록체인
- Make sure the Cursor is initialized correctly before accessing data for it.
- SQLiteConstraintException
- 클라우드란?
- cmd2
- 페니빙
Archives
- Today
- Total
푸르미르
collections 모듈의 Counter 클래스 본문
데이터의 개수를 계산하는데 유용한 collections 모듈의 Counter 클래스
파이썬이 설치가 되어있다면 사용이 가능하다. 단 from collections import Counter 을 해야한다.
Counter클래스는 리스트나 문자열의 요소의 개수를 세어 딕셔너리 형태로 리턴한다. (요소key:개수value)
▷문자열
1
2
3
4
|
collections import Counter
print(Counter('HAHAha')) #Counter({'H': 2, 'A': 2, 'h': 1, 'a': 1}) 대소문자 구분
print(sorted(Counter('HAHAha').elements())) #['A', 'A', 'H', 'H', 'a', 'h']
|
cs |
대소문자를 구분한다.
▷리스트
1
2
3
4
|
collections import Counter
print(Counter(['aa','bb','cc','aa'])) #Counter({'aa': 2, 'bb': 1, 'cc': 1})
print(sorted(Counter(['aa','bb','cc','aa']).elements())) #['aa', 'aa', 'bb', 'cc']
|
cs |
sorted함수는 리스트 형태로 정렬을 해주는 함수인데 나중에 다루기로 하고, elements()함수는 요소들을 각 개수 만큼 반환해준다고만 간단히 알고 일단 설명은 조금 이따가 하도록 하겠다.
Counter은 요소의 개수가 많은 순으로 정렬되어 딕셔너리를 반환한다.
Counter은 연산이 가능하다. 가능한 연산에는 +, -, |(합집합), &(교집합) 이 있다.
1
2
3
4
5
6
7
8
9
|
from collections import Counter
a=[1,1,1,3,3,3]
b=[2,2,3,3,3,3,3]
print(Counter(a)+Counter(b)) #Counter({3: 8, 1: 3, 2: 2})
print(Counter(a)-Counter(b)) #Counter({1: 3}) 2가 -2개이나 음수는 출력되지 않음
print(Counter(a)|Counter(b)) #Counter({3: 5, 1: 3, 2: 2}) 합집합
print(Counter(a)&Counter(b)) #Counter({3: 3}) 교집합, 3이 3개 겹침
|
cs |
▷관련 함수들
most_common()함수
counter.most_common(n): counter의 요소를 세어, 최빈값 n개를 튜플을 요소로 리스트 return.
1
2
3
4
5
6
|
from collections import Counter
counter=[1,1,1,2,2,3,3,3,4]
print(Counter(counter).most_common()) #[(1, 3), (3, 3), (2, 2), (4, 1)] 아무런 파라미터도 제공하지 않았을 때
print(Counter(counter).most_common(2)) #[(1, 3), (3, 3)]
|
cs |
update()함수
counter.update(갱신할 것):counter의 value를 갱신한다.
1
2
3
4
5
6
|
from collections import Counter
counter=Counter([1,1,1,2,2,3,3,3,4])
print(counter) #Counter({1: 3, 3: 3, 2: 2, 4: 1})
counter.update({1:4, 4:2, 5:1}) #새로운 값까지 업데이트, 기존의 요소 추가
print(counter) #Counter({1: 7, 3: 3, 4: 3, 2: 2, 5: 1})
|
cs |
리스트를 업데이트 한다.
1
2
3
4
5
6
|
from collections import Counter
counter2=Counter('Aabc')
print(counter2) #Counter({'A': 1, 'a': 1, 'b': 1, 'c': 1})
counter2.update('AAAdD')
print(counter2) #Counter({'A': 4, 'a': 1, 'b': 1, 'c': 1, 'd': 1, 'D': 1}) 새로운 문자 까지 포함& 기존 문자 추가
|
cs |
문자열 업데이트 한다.
elements()함수
보통 SORTED()함수와 같이 쓰이며 리스트 형태로 요소들을 개수대로 나열하여 반환한다.
1
2
3
4
|
from collections import Counter
counter=Counter('Aabc')
print(sorted(counter.elements())) #['A', 'a', 'b', 'c']
|
cs |
subtract()함수
counter.subtract(counter2) (=> counter-counter2로 보면 이해하기는 쉬움.)
요소를 뺀다. -연산과 다르게,음수도 표시 된다.
1
2
3
4
5
6
|
from collections import Counter
counter=Counter('Aabc')
counter2=Counter('AAb')
counter.subtract(counter2)
print(counter) #Counter({'a': 1, 'c': 1, 'b': 0, 'A': -1}) 음수도 나옴
|
cs |
'PYTHON, ALGORITHM' 카테고리의 다른 글
[python]삽입정렬 (0) | 2021.02.18 |
---|---|
[python]선택정렬 (2) | 2021.02.18 |
파이썬으로 Linked List 만들기 (3) | 2021.02.03 |
입력 속도를 높이는 방법 (0) | 2021.02.02 |