Python에서는 다양한 형태의 데이터 컨테이너가 서로 섞여 사용될 수 있습니다. 예를 들어, 리스트의 각 요소가 튜플로 구성된 구조를 만들 수 있는데요. 이번 글에서는 이러한 튜플 리스트 안에서 특정 요소가 몇 번 등장하는지, 즉 빈도(frequency)를 계산하는 방법을 두 가지 방식으로 소개합니다.
방법 1: count()와 map() 활용하기
첫 번째 방법은 람다(lambda) 함수를 사용해 리스트에 포함된 각 튜플의 첫 번째 요소만 추출한 뒤, map() 함수로 이를 일괄 처리하고 count() 메서드로 원하는 요소의 총 개수를 구하는 방식입니다.
예제 코드
# 튜플 리스트 초기화
listA = [('Apple', 'Mon'), ('Banana', 'Tue'), ('Apple', 'Wed')]
# 주어진 리스트 출력
print("주어진 튜플 리스트 : ", listA)
# 튜플 리스트에서 빈도 계산
Freq_res = list(map(lambda i: i[0], listA)).count('Apple')
# 결과 출력
print("해당 요소의 빈도 : ", Freq_res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
주어진 튜플 리스트 : [('Apple', 'Mon'), ('Banana', 'Tue'), ('Apple', 'Wed')]
해당 요소의 빈도 : 2방법 2: Counter 활용하기
두 번째 방법은 collections 모듈의 Counter 클래스를 사용하는 것입니다. Counter는 각 요소의 등장 횟수를 자동으로 집계해 주기 때문에 매우 편리합니다. for 반복문을 통해 리스트 안의 각 튜플을 순회하며 첫 번째 요소들을 카운팅합니다.
예제 코드
from collections import Counter
# 튜플 리스트 초기화
listA = [('Apple', 'Mon'), ('Banana', 'Tue'), ('Apple', 'Wed')]
# 주어진 리스트 출력
print("주어진 튜플 리스트 : ", listA)
# 튜플 리스트에서 빈도 계산
Freq_res = Counter(i[0] for i in listA)['Apple']
# 결과 출력
print("해당 요소의 빈도 : ", Freq_res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
주어진 튜플 리스트 : [('Apple', 'Mon'), ('Banana', 'Tue'), ('Apple', 'Wed')]
해당 요소의 빈도 : 2마무리
두 방법 모두 동일하게 'Apple'이 2번 등장한다는 결과를 반환합니다. 간단한 일회성 확인이라면 map()과 count() 조합이 직관적이고, 여러 요소의 빈도를 한꺼번에 확인하거나 성능이 중요한 경우에는 Counter를 사용하는 것이 더 효율적입니다. 상황에 맞게 적절한 방법을 선택해 활용해 보세요.