Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 첫 번째 열의 값을 기준으로 행렬 병합하기

첫 번째 열의 요소를 기준으로 행렬(중첩 리스트)을 병합해야 하는 경우, 간단한 반복문과 리스트 컴프리헨션(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, [])는 해당 키가 없으면 빈 리스트를 기본값으로 생성해 주므로, 키 존재 여부를 매번 확인할 필요가 없습니다.

  • 리스트 컴프리헨션을 사용하여 딕셔너리의 키와 값(리스트)을 다시 하나의 행으로 결합합니다.

  • 결과는 변수에 할당된 후 최종적으로 콘솔에 출력됩니다.

이 방식은 첫 번째 열의 값이 같은 행들을 자동으로 그룹화하므로, 데이터 정리나 로그 데이터 집계 등에 유용하게 활용할 수 있습니다.