이 글에서는 Python 리스트에 포함된 각 요소의 빈도(등장 횟수)를 구하는 방법을 알아봅니다. 문제를 해결하는 방법은 여러 가지가 있지만, 그중 가장 널리 사용되는 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.
방법 1: 딕셔너리를 이용한 직접 구현
딕셔너리를 활용하면 별도의 모듈 없이 요소별 등장 횟수를 직접 집계할 수 있습니다. 아래 단계를 따라 코드를 작성해 보세요.
- 요소가 담긴 리스트와 빈 딕셔너리를 초기화합니다.
- 리스트의 요소를 하나씩 순회합니다.
- 현재 요소가 딕셔너리에 이미 존재하는지 확인합니다.
- 존재한다면 해당 키의 값을 1 증가시킵니다.
- 존재하지 않는다면 해당 키를 새로 만들고 값을 1로 설정합니다.
- 순회가 끝나면 딕셔너리를 출력합니다.
예제 코드
# 리스트 초기화
random_list = ['A', 'A', 'B', 'C', 'B', 'D', 'D', 'A', 'B']
frequency = {}
# 리스트 순회
for item in random_list:
# 딕셔너리에 요소가 있는지 확인
if item in frequency:
# 이미 있다면 카운트 증가
frequency[item] += 1
else:
# 없다면 카운트를 1로 초기화
frequency[item] = 1
# 빈도 출력
print(frequency)
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
실행 결과
{'A': 3, 'B': 3, 'C': 1, 'D': 2}
방법 2: collections.Counter 모듈 활용
Python 표준 라이브러리인 collections 모듈의 Counter 클래스를 사용하면 앞서 살펴본 과정을 한 줄로 처리할 수 있습니다. 다음 단계를 따라 해 보세요.
collections모듈을 임포트합니다.- 요소가 담긴 리스트를 초기화합니다.
Counter를 사용해 요소별 빈도를 계산합니다.dict()로 변환한 뒤 결과를 출력합니다.
예제 코드
# 모듈 임포트 import collections # 리스트 초기화 random_list = ['A', 'A', 'B', 'C', 'B', 'D', 'D', 'A', 'B'] # Counter로 요소 빈도 계산 frequency = collections.Counter(random_list) # 빈도 출력 print(dict(frequency))
이 코드 역시 동일한 결과를 출력합니다.
실행 결과
{'A': 3, 'B': 3, 'C': 1, 'D': 2}
마무리
두 방법 모두 같은 결과를 제공하지만, 상황에 따라 선택 기준이 달라집니다. 집계 로직을 직접 제어하고 싶다면 딕셔너리 방식이, 코드를 간결하게 유지하고 싶다면 collections.Counter가 적합합니다. 참고로 Counter는 most_common(n) 메서드를 통해 가장 빈도가 높은 n개의 요소를 손쉽게 조회할 수 있는 부가 기능도 제공하므로, 실무에서는 더욱 유용하게 활용할 수 있습니다.
글에 대해 궁금한 점이 있다면 댓글로 남겨 주세요.