파이썬에서 카운터란?
Python 카운터(counter)는 컨테이너에 있는 각 요소의 수를 보유하는 컨테이너입니다. 카운터는 딕셔너리 클래스 내에서 사용 가능한 하위 클래스입니다.
카운터는 딕셔너리 클래스 내에서 사용 가능한 하위 클래스입니다. Python 카운터 도구를 사용하여 해시 테이블 개체라고도 하는 개체의 키-값 쌍을 계산할 수 있습니다.
목차
왜 Counter를 사용하는가?
다음은 Python 3 Counter를 사용하는 주요 이유입니다.
- Counter는 hashtable 객체처럼 정렬되지 않은 컬렉션에 데이터를 보관합니다. 여기서 요소는 키와 개수를 값으로 나타냅니다.
- 반복 가능한 목록의 항목 수를 셀 수 있습니다.
- 덧셈, 뺄셈, 교집합, 합집합과 같은 산술 연산은 카운터에서 쉽게 수행할 수 있습니다.
- 카운터는 다른 카운터의 요소도 셀 수 있습니다.
파이썬 카운터(Counter)
Python 카운터는 모두 반복 가능한 객체인 리스트, 튜플, 딕셔너리, 문자열을 입력으로 받아 각 요소의 개수가 포함된 출력을 제공합니다.
Syntax
Counter(list)
다음의 리스트가 있다고 가정합니다.
list1 = ['x','y','z','x','x','x','y', 'z']
리스트에는 요소 x, y 및 z가 있습니다. 이 리스트에서 Counter를 사용하면 x, y 및 z가 몇 번 있는지 계산합니다. list1에서 counter를 사용하는 경우 출력은 다음과 같아야 합니다.
Counter({'x': 4, 'y': 2, 'z': 2})
따라서 x의 개수는 4, y는 2, z는 2입니다.
Counter를 사용하려면 아래 주어진 예제와 같이 먼저 가져와야 합니다.
from collections import Counter
다음은 Counter 모듈의 작동을 보여주는 간단한 예입니다.
from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))
출력
Counter({'x': 4, 'y': 2, 'z': 2})
문자열(String)이 있는 카운터(Counter)
파이썬에서는 모든 것이 객체이고 문자열도 객체입니다. 파이썬 문자열은 단순히 큰따옴표로 문자를 둘러싸서 생성할 수 있습니다. Python은 문자 유형을 지원하지 않습니다. 이들은 길이가 1인 문자열로 처리되며 하위 문자열로도 간주됩니다.
아래 예에서는 문자열이 Counter에 전달됩니다. 키가 요소이고 값이 개수인 키/값 쌍이 있는 사전 형식을 반환합니다. 또한 공백을 요소로 간주하고 문자열의 공백 수를 제공합니다.
예시
from collections import Counter
my_str = "Welcome to Entity01 Tutorials!"
print(Counter(my_str))
출력
Counter({'t': 4, 'o': 3, ' ': 3, 'e': 2, 'l': 2, 'i': 2, 'W': 1, 'c': 1, 'm': 1,
'E': 1, 'n': 1, 'y': 1, '0': 1, '1': 1, 'T': 1, 'u': 1, 'r': 1, 'a': 1, 's': 1, '!': 1})
리스트(List)가 있는 카운터(Counter)
리스트는 대괄호 안에 요소가 있는 반복 가능한 객체입니다.
리스트의 요소는 카운터에 제공될 때 해시 테이블 개체로 변환되며, 여기서 요소는 키가 되고 값은 주어진 리스트의 요소 개수가 됩니다.
예를 들어 ['x','y','z','x','x','x','y','z'] 리스트에 카운터를 제공하면 목록의 각 요소 수를 알려줍니다.
from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))
출력
Counter({'x': 4, 'y': 2, 'z': 2})
딕셔너리(Dictionary)가 있는 카운터(Counter)
딕셔너리에는 키/값 쌍으로 요소가 있으며 중괄호 안에 기록됩니다.
딕셔너리가 카운터에 제공되면 요소가 키가 되는 해시 테이블 개체로 변환되고 값은 주어진 딕셔너리의 요소 개수가 됩니다.
예: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Counter 함수는 주어진 딕셔너리에 있는 각 키의 개수를 찾으려고 시도합니다.
from collections import Counter
dict1 = {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))
출력
Counter({'x': 4, 'y': 2, 'z': 2})
튜플(Tuple)이 있는 카운터(Counter)
튜플은 둥근 괄호 안에 쉼표로 구분된 개체 모음입니다. Counter는 주어진 튜플의 각 요소 수를 알려줍니다.
튜플이 Counter에 주어지면 요소가 키가 되고 값이 주어진 튜플의 요소 개수가 되는 해시 테이블 개체로 변환됩니다.
from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))
출력
Counter({'x': 4, 'y': 2, 'z': 2})
카운터 액세스, 초기화 및 업데이트
카운터 초기화 (Initializing Counter)
카운터는 아래와 같이 문자열 값, 목록, 사전 또는 튜플을 전달하여 초기화할 수 있습니다.
from collections import Counter
print(Counter("Welcome to Entity01 Tutorials!")) #문자열에서 사용
print(Counter(['x','y','z','x','x','x','y', 'z'])) #리스트에서 사용
print(Counter({'x': 4, 'y': 2, 'z': 2})) #딕셔너리에서 사용
print(Counter(('x','y','z','x','x','x','y', 'z'))) #튜플에서 사용
아래와 같이 빈 카운터를 초기화할 수도 있습니다.
from collections import Counter
_count = Counter()
카운터 업데이트 (Updating Counter)
update() 메서드를 사용하여 카운터에 값을 추가할 수 있습니다.
_count.update('Welcome to Entity01 Tutorials!')
최종코드는 다음과 같습니다.
from collections import Counter
_count = Counter()
_count.update('Welcome to Entity01 Tutorials!')
print(_count)
출력
Counter({'t': 4, 'o': 3, ' ': 3, 'e': 2, 'l': 2, 'i': 2, 'W': 1, 'c': 1, 'm': 1, 'E': 1,
'n': 1, 'y': 1, '0': 1, '1': 1, 'T': 1, 'u': 1, 'r': 1, 'a': 1, 's': 1, '!': 1})
카운터 액세스 (Accessing Counter)
카운터에서 값을 가져오려면 다음과 같이 하면 됩니다.
from collections import Counter
_count = Counter()
_count.update('Welcome to Entity01 Tutorials!')
print('%s : %d' % ('t', _count['t']))
print('\n')
for char in 'Entity':
print('%s : %d' % (char, _count[char]))
출력
t : 4
E : 1
n : 1
t : 4
i : 2
t : 4
y : 1
카운터에서 요소 삭제
Counter에서 요소를 삭제하려면 아래 예제와 같이 del 을 사용할 수 있습니다.
from collections import Counter
dict1 = {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))
출력
Counter({'y': 2, 'z': 2})
카운터 산술 연산
덧셈, 뺄셈, 교집합 및 합집합과 같은 산술 연산은 아래 예와 같이 카운터에서 수행할 수 있습니다.
from collections import Counter
counter1 = Counter({'x': 4, 'y': 2, 'z': -2})
counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })
#덧셈
counter3 = counter1 + counter2 # 양수인 값만 반환됩니다.
print(counter3)
#뺄셈
counter4 = counter1 - counter2
# 모든 -ve 숫자는 제외됩니다. 예를 들어 z는 z = -2-4=-6이 됩니다.
# -ve 값이므로 출력에 표시되지 않습니다.
print(counter4)
#교집합
counter5 = counter1 & counter2
#counter1과 counter2의 모든 공통 양의 최소값을 제공합니다.
print(counter5)
#합집합
counter6 = counter1 | counter2
# counter1과 counter2에서 양의 최대값을 줄 것입니다.
print(counter6)
출력
Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})
카운터에서 사용할 수 있는 메서드
Counter에서 사용할 수 있는 몇 가지 중요한 방법이 있습니다. 다음은 동일한 목록입니다.
- elements() : 이 메서드는 count >0인 모든 요소를 반환합니다. 개수가 0 또는 -1인 요소는 반환되지 않습니다.
- most_common(value): 이 메서드는 카운터 목록에서 가장 일반적인 요소를 반환합니다.
- subtract(): 이 메서드는 다른 카운터에서 요소를 공제하는 데 사용됩니다.
- update(): 이 메서드는 다른 Counter의 요소를 업데이트하는 데 사용됩니다.
예 : elements()
from collections import Counter
counter1 = Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})
_elements = counter1.elements() # 양수 값과 count>0인 모든 요소를 제공합니다.
for a in _elements:
print(a)
출력
x
x
x
x
x
y
y
예 : most_common(value)
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
common_element = counter1.most_common(2)
# 딕셔너리는 가장 일반적인 요소에 따라 먼저 정렬되고 그 다음에 정렬됩니다.
print(common_element)
common_element1 = counter1.most_common()
# 값이 most_common에 주어지지 않으면 사전을 정렬하고 처음부터 가장 일반적인 요소를 제공합니다.
# 마지막 요소는 가장 덜 일반적인 요소가 됩니다.
print(common_element1)
출력
[('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]
예 : subtract()
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.subtract(counter2)
print(counter1)
출력
Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})
예 : update()
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)
출력
Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})
카운트 재할당
아래와 같이 카운터 개수를 다시 할당할 수 있습니다.
{'x': 5, 'y': 12, 'z': -2, 'x1':0}과 같은 딕셔너리가 있다고 가정합니다.
아래와 같이 요소 수를 변경할 수 있습니다.
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter1['y'] = 20
print(counter1)
출력: 실행 후 y 개수가 12에서 20으로 변경된 것을 볼 수 있습니다.
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
카운터(Counter)를 사용하여 요소 수 가져오기 및 설정
Counter를 사용하여 요소 수를 얻으려면 다음과 같이 할 수 있습니다.
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # 이것은 'y' 요소의 개수를 알려줍니다.
출력
12
요소 수를 설정하려면 다음과 같이 할 수 있습니다.
from collections import Counter
counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y'])
counter1['y'] = 20
counter1['y1'] = 10
print(counter1)
출력
12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})
요약:
- 카운터는 컨테이너에 있는 각 요소의 수를 보유하는 컨테이너입니다.
- 카운터는 딕셔너리 클래스 내에서 사용 가능한 하위 클래스입니다.
- 카운터 도구를 사용하여 해시 테이블 개체라고도 하는 개체의 키-값 쌍을 계산할 수 있습니다.
- 카운터는 hashtable 객체처럼 정렬되지 않은 컬렉션에 데이터를 보관합니다. 여기서 요소는 키와 개수를 값으로 나타냅니다.
- 반복 가능한 리스트의 항목 수를 셀 수 있습니다.
- 덧셈, 뺄셈, 교집합, 합집합과 같은 산술 연산은 카운터에서 쉽게 수행할 수 있습니다.
- 카운터는 다른 카운터의 요소도 계산할 수 있습니다.
- 카운터에서 사용할 수 있는 중요한 메소드는 elements() , most_common(value),tract() 및 update()입니다.
- 카운터는 문자열, 리스트, 딕셔너리 및 튜플에 사용할 수 있습니다.
'초보자를 위한 Python > 5. Python 함수' 카테고리의 다른 글
5.13 파이썬 time.sleep() : 코드 진행의 지연 (예제) (0) | 2022.11.02 |
---|---|
5.12 파이썬의 Enumerate() 함수: 루프, 튜플, 문자열 (0) | 2022.11.01 |
5.10 파이썬 큐(Queue) : FIFO, LIFO 예제 (0) | 2022.10.26 |
5.9 파이썬 Yield 함수 : Generator & Yield vs Return 예제 (0) | 2022.10.25 |
5.8 예제가 있는 Python Timeit() (0) | 2022.10.24 |
댓글