[파이썬] count, collections.Counter를 이용하여 원소의 개수 세기

InAnarchy·2023년 4월 12일
0

Python

목록 보기
5/14
post-thumbnail
post-custom-banner

Count

list.count(x)

  • 리스트 내에 x이 등장하는 개수
    Return the number of times x appears in the list.
fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
print(fruits.count('apple')) #2
print(fruits.count('carrot')) #0

str.count(x)

  • 문자열 내에 x가 등장하는 개수

형식

str.count(x)
str.count(x, start) #start인덱스부터 시작해서 문자열 끝까지
str.count(x, start, end) #start인덱스부터 end-1 까지
string = 'abracadabra'
print(string.count('a')) #5
print(string.count('a',2)) #4
print(string.count('a',2,6)) #2
print(string.count('bra')) #2
print(string.count('ab')) #2

Counter 클래스

  • collection 모듈의 Counter 클래스를 사용
  • 리스트와 문자열 모두 사용 가능
from collections import Counter
arr = ['a','b','c','dd','b','g','zz','k','k']
print(Counter(arr))
#Counter({'b': 2, 'k': 2, 'a': 1, 'c': 1, 'dd': 1, 'g': 1, 'zz': 1})

이 때 타입은 <class 'collections.Counter'> 이다.

string = 'abracadabra'

strcnt = Counter(string)
print(strcnt)
#Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
string = 'abracadabra'
cnt = Counter(string) #Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
print(cnt['a']) #5

most_common() 메서드

  • 데이터가 많은 순으로 정렬된 배열을 리턴
  • 매개변수를 생략하면() 모든 요소를 반환하고, (n)은 가장 많은 n개를 반환

아래의 코드로 Counter와 Counter.most_common()의 차이를 확인해보자.

new_str = 'hello world!'
cntnew = Counter(new_str) #Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1})
print(cntnew)
print(type(cntnew)) #<class 'collections.Counter'>

common = Counter(new_str).most_common() #[('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1), ('!', 1)]
print(common)
print(Counter(new_str).most_common(3)) #[('l', 3), ('o', 2), ('h', 1)]
print(type(common)) #<class 'list'>

collection 모듈에 대해서는 다시 제대로 정리해야겠다.

REFERNCE
PYTHON DOCS

profile
github blog 쓰다가 관리하기 귀찮아서 돌아왔다
post-custom-banner

0개의 댓글