파이썬에서는 collections 모듈의 defaultdict를 활용하면 튜플 리스트를 첫 번째 요소를 기준으로 손쉽게 그룹화할 수 있습니다. 일반 딕셔너리와 달리 defaultdict는 존재하지 않는 키에 접근할 때 자동으로 기본값(여기서는 빈 리스트)을 생성해 주기 때문에 그룹화 작업에 특히 유용합니다.
예제
먼저 그룹화할 튜플 리스트를 준비합니다.
lst = [
(1, 'Hello', 'World', 112),
(2, 'Hello', 'People', 42),
(2, 'Hi', 'World', 200)
]
defaultdict(list) 객체를 만든 뒤, 언패킹(k, *v)을 이용해 각 튜플의 첫 번째 요소는 키로, 나머지 요소들은 해당 키의 리스트에 추가합니다.
from collections import defaultdict
d = defaultdict(list)
for k, *v in lst:
d[k].append(v)
print(d)
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
defaultdict(<class 'list'>, {1: [['Hello', 'World', 112]], 2: [['Hello', 'People', 42], ['Hi', 'World', 200]]})
첫 번째 요소가 같은 튜플들이 하나의 키 아래에 묶인 것을 확인할 수 있습니다. 예를 들어 첫 번째 요소가 2인 두 개의 튜플이 하나의 그룹으로 합쳐졌습니다.
결과를 다시 튜플로 변환하기
그룹화된 상태를 유지하면서 결과를 튜플 형태로 되돌리고 싶다면 tuple(d.items()) 메서드를 사용하면 됩니다.
예제
print(tuple(d.items()))
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
((1, [['Hello', 'World', 112]]), (2, [['Hello', 'People', 42], ['Hi', 'World', 200]]))
이처럼 defaultdict를 사용하면 별도의 조건문 없이 간결한 코드로 데이터를 그룹화할 수 있으며, 필요에 따라 딕셔너리나 튜플 등 원하는 자료형으로 자유롭게 변환하여 활용할 수 있습니다.