튜플로 구성된 리스트에서 각 값(키)이 몇 번 등장하는지, 즉 고유 키의 개수를 구해야 하는 경우가 있습니다. 이때는 리스트를 반복(iteration)하면서 각 요소의 등장 횟수를 하나씩 세어 가면 됩니다.
구현 방법
파이썬의 collections 모듈에서 제공하는 defaultdict를 활용하면 별도의 초기화 없이도 손쉽게 카운트를 누적할 수 있습니다.
예제 코드
import collections
my_result = collections.defaultdict(int)
my_list = [[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
print("The list of list is :")
print(my_list)
for elem in my_list:
my_result[elem[0]] += 1
print("The result is : ")
print(my_result)출력 결과
The list of list is :
[[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
The result is :
defaultdict(<class 'int'>, {('Hello', 'Hey'): 2, ('Jane', 'Will'): 1, ('William', 'John'): 1, ('z', 'q'): 1})코드 설명
카운팅에 필요한
collections모듈을 임포트하고, 기본값이 정수 0인defaultdict객체를 생성합니다.문자열과 문자를 담고 있는 튜플들의 중첩 리스트를 정의합니다.
정의된 리스트를 콘솔에 그대로 출력하여 확인합니다.
리스트를 반복하면서 각 항목의 첫 번째 요소(튜플)를 키로 사용해 해당 값이 나타날 때마다 1씩 증가시킵니다.
동일한 튜플
('Hello', 'Hey')는 두 번 등장했기 때문에 최종 결과에서 카운트가 2로 집계되며, 이 결과 딕셔너리가 콘솔에 출력됩니다.