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

Python – 튜플 리스트에서 값별 고유 키 개수 구하기

튜플로 이루어진 리스트에서 각 값(두 번째 요소)에 대해 고유한 키(첫 번째 요소)가 몇 개 존재하는지 세어야 하는 경우가 있습니다. 이럴 때 defaultdict, set 연산자, 그리고 append 메서드를 활용하면 손쉽게 해결할 수 있습니다.

예제 코드

아래는 실제 동작을 보여주는 예제입니다.

from collections import defaultdict

my_list = [(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]

print("The list is :")
print(my_list)

my_result = defaultdict(list)

for element in my_list:
    my_result[element[1]].append(element[0])

my_result = dict(my_result)

result_dictionary = dict()

for key in my_result:
    result_dictionary[key] = len(list(set(my_result[key])))

print("The resultant list is :")
print(result_dictionary)

실행 결과

The list is :
[(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
The resultant list is :
{32: 2, 21: 3, 11: 1, 10: 1, 23: 2}

코드 설명

  • 필요한 패키지(collections 모듈의 defaultdict)를 환경에 임포트합니다.
  • 튜플로 구성된 리스트를 정의하고 콘솔에 출력합니다.
  • defaultdict를 사용해 값을 담을 빈 딕셔너리를 생성합니다.
  • 리스트를 순회하면서 각 튜플의 두 번째 요소를 키로, 첫 번째 요소를 해당 키의 리스트에 추가(append)합니다.
  • 이렇게 만들어진 defaultdict 객체를 일반 딕셔너리로 변환합니다.
  • 결과를 저장할 또 다른 빈 딕셔너리를 생성합니다.
  • 딕셔너리의 키를 순회하면서 set 연산자를 사용해 중복을 제거한 고유한 요소들만 추출합니다.
  • 고유 요소들을 리스트로 변환한 뒤 길이를 계산하여 결과 딕셔너리에 저장합니다.
  • 최종 결과 딕셔너리를 콘솔에 출력합니다.

정리

이 방식은 튜플 리스트의 두 번째 요소를 기준으로 데이터를 그룹화한 뒤, 각 그룹 내에서 중복되지 않는 첫 번째 요소의 개수를 계산합니다. 예를 들어 출력 결과에서 21: 3은 두 번째 요소가 21인 튜플들의 첫 번째 요소 중 서로 다른 값이 3개(12, 89, 71) 존재한다는 의미입니다. defaultdict 덕분에 키 존재 여부를 매번 확인하지 않고도 깔끔하게 그룹화할 수 있다는 점이 이 코드의 핵심 장점입니다.