튜플 리스트에서 동일한 키를 가진 값들을 묶어 합산하는 '그룹화된 합계'를 구해야 할 때는 Counter 클래스와 '+' 연산자를 함께 사용하면 됩니다.
Counter는 해시 가능(hashable)한 객체를 손쉽게 세어 주는 컬렉션 하위 클래스입니다. 호출되는 순간 리스트나 튜플과 같은 반복 가능한(iterable) 객체를 기반으로 자체적으로 해시 테이블을 생성하며, 개수가 0이 아닌 모든 요소에 대한 결과를 반환합니다.
'+' 연산자는 숫자 값을 더하거나 문자열을 연결할 때 사용할 수 있으며, 두 개의 Counter 객체를 더하면 같은 키의 값들이 자동으로 누적됩니다.
아래는 이를 실제로 구현한 예제입니다.
예제 코드
from collections import Counter
my_list_1 = [('Hi', 14), ('there', 16), ('Jane', 28)]
my_list_2 = [('Jane', 12), ('Hi', 4), ('there', 21)]
print("The first list is : ")
print(my_list_1)
print("The second list is : ")
print(my_list_2)
cumulative_val_1 = Counter(dict(my_list_1))
cumulative_val_2 = Counter(dict(my_list_2))
cumulative_val_3 = cumulative_val_1 + cumulative_val_2
my_result = list(cumulative_val_3.items())
print("The grouped summation of list of tuple is : ")
print(my_result)실행 결과
The first list is :
[('Hi', 14), ('there', 16), ('Jane', 28)]
The second list is :
[('Jane', 12), ('Hi', 4), ('there', 21)]
The grouped summation of list of tuple is :
[('Hi', 18), ('there', 37), ('Jane', 40)]코드 설명
- 필요한 패키지(
collections.Counter)를 임포트합니다. - 두 개의 튜플 리스트를 정의하고 콘솔에 출력합니다.
- 각 튜플 리스트를
dict()함수로 딕셔너리 형태로 변환한 뒤, 다시Counter객체로 만듭니다. - '+' 연산자를 사용해 두 Counter 객체를 더하면, 동일한 키를 가진 값들이 자동으로 합산됩니다. 예를 들어 'Hi'는 14 + 4 = 18이 됩니다.
- 결과 객체의
items()메서드를 호출해 (키, 값) 쌍을 리스트로 변환합니다. - 이 최종 결과를 변수에 저장하고 콘솔에 출력합니다.
이처럼 Counter를 활용하면 반복문 없이도 간결하고 직관적인 코드로 튜플 리스트의 그룹별 합계를 계산할 수 있습니다. 데이터 집계 작업에서 매우 유용하게 활용할 수 있는 패턴입니다.