첫 번째 열의 요소를 기준으로 행렬(중첩 리스트)을 병합해야 하는 경우, 간단한 반복문과 리스트 컴프리헨션(list comprehension), 그리고 딕셔너리의 setdefault 메서드를 활용하면 손쉽게 해결할 수 있습니다.
예제
다음은 이를 구현한 예제 코드입니다.
my_list = [[41, "python"], [13, "pyt"], [41, "is"],[4, "always"], [3, "fun"]]
print("The list is :")
print(my_list)
my_result = {}
for key, value in my_list:
my_result.setdefault(key, []).append(value)
my_result = [[key] + value for key, value in my_result.items()]
print("The result is :")
print(my_result)출력 결과
The list is : [[41, 'python'], [13, 'pyt'], [41, 'is'], [4, 'always'], [3, 'fun']] The result is : [[41, 'python', 'is'], [13, 'pyt'], [4, 'always'], [3, 'fun']]
코드 설명
먼저 중첩 리스트를 정의하고 콘솔에 출력합니다.
병합된 결과를 저장할 빈 딕셔너리를 생성합니다.
리스트를 순회하면서
setdefault메서드를 사용해 같은 키(첫 번째 열의 값)를 가진 요소들을 하나의 리스트로 묶어 딕셔너리에 추가합니다.setdefault(key, [])는 해당 키가 없으면 빈 리스트를 기본값으로 생성해 주므로, 키 존재 여부를 매번 확인할 필요가 없습니다.리스트 컴프리헨션을 사용하여 딕셔너리의 키와 값(리스트)을 다시 하나의 행으로 결합합니다.
결과는 변수에 할당된 후 최종적으로 콘솔에 출력됩니다.
이 방식은 첫 번째 열의 값이 같은 행들을 자동으로 그룹화하므로, 데이터 정리나 로그 데이터 집계 등에 유용하게 활용할 수 있습니다.