Python의 목록에서 발생 횟수를 계산하는 방법
Python 목록에서 요소의 발생 횟수를 계산하는 가장 좋은 방법을 알아보세요. count() 메서드, collections.Counter 및 사전 계산을 비교합니다.
개요
데이터 세트를 분석하려면 개별 요소의 발생 횟수를 계산해야 하는 경우가 많습니다. 예를 들어 각 후보자가 받은 표 수를 계산하고, 텍스트 파일의 단어 빈도를 계산하고, 트랜잭션 로그에서 중복 항목을 식별합니다. Python은 단일 항목 수 또는 전체 빈도 집계를 찾고 있는지 여부에 따라 이 문제를 해결하기 위한 여러 도구를 제공합니다.
단일 특정 요소의 빈도를 확인하기 위해 내장 목록 유형은 `.count(value)` 메소드를 제공합니다. 목록을 반복하고 정확한 값이 나타나는 횟수를 계산하는 정수를 반환합니다. 간단하고 읽기 쉽지만, 모든 요소의 개수를 얻기 위해 루프에서 `.count()`를 호출하는 것은 매우 비효율적이며 O(N^2) 복잡성으로 실행됩니다.
단일 패스에서 모든 요소의 빈도를 동시에 계산하기 위해 표준 라이브러리는 `collections` 모듈 내에 `Counter` 클래스를 제공합니다. 목록을 `Counter`에 전달하면 O(N) 시간에 모든 요소의 빈도를 나타내는 사전과 같은 객체가 반환됩니다. 또한 상위 항목을 빠르게 검색하기 위해 `most_common()`과 같은 도우미 메서드를 제공합니다.
코드 및 실행 출력
이 코드는 목록의 단일 요소 수를 계산하고 collections.Counter를 사용하여 총 항목 수를 가져오는 방법을 보여줍니다.
from collections import Counter
colors = ["red", "blue", "red", "green", "blue", "red"]
# Method 1: Count a single item using list.count()
red_count = colors.count("red")
print("Occurrences of 'red':", red_count)
# Method 2: Count all items using collections.Counter (Fast and powerful)
color_counts = Counter(colors)
print("\nCounter Object:", color_counts)
print("Count of 'blue':", color_counts["blue"])
# Getting the top most common items
print("Most common color:", color_counts.most_common(1))
# Method 3: Counting manually using a loop and a standard dictionary
manual_counts = {}
for item in colors:
manual_counts[item] = manual_counts.get(item, 0) + 1
print("\nManual dict count:", manual_counts)Occurrences of 'red': 3
Counter Object: Counter({'red': 3, 'blue': 2, 'green': 1})
Count of 'blue': 2
Most common color: [('red', 3)]
Manual dict count: {'red': 3, 'blue': 2, 'green': 1}단계별 구현
- 목록에서 단일 특정 항목의 개수만 필요한 경우 list_variable.count(value)를 호출하세요.
- collections.Counter를 가져오고 목록을 전달하여 최적화된 단일 패스에서 모든 고유 요소를 계산합니다.
- Counter 객체에 .most_common(n) 메서드를 사용하여 가장 빈번한 상위 n개 요소를 추출합니다.
자주 묻는 질문
collections.Counter 객체에서 누락된 키를 조회하면 어떻게 됩니까?
KeyError를 발생시키는 표준 사전과 달리 Counter 객체는 누락된 요소에 대해 0을 반환하여 0번 발생을 나타냅니다.
list.count()를 사용하여 루프에서 계산하는 것과 비교했을 때 Counter의 시간 복잡도는 얼마나 됩니까?
카운터는 목록을 한 번 통과하여 O(N) 선형 시간의 모든 요소를 계산합니다. 목록 요소를 반복하고 list.count()를 호출하는 데는 O(N^2)의 2차 시간이 걸리며, 이는 큰 목록의 경우 매우 느립니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 목록
Python 목록에 대한 모든 것을 알아보세요. Python에서 배열을 기본적으로 생성, 분할, 수정 및 반복하는 방법을 알아보세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.