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

Python에서 첫 번째 요소의 발생 빈도를 기준으로 튜플 정렬하기

튜플 리스트를 첫 번째 요소의 발생 여부(빈도)를 기준으로 정렬해야 하는 경우, dict.fromkeys 메서드를 활용하면 간단하게 해결할 수 있습니다.

리스트(list)는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 자료구조입니다.

튜플 리스트(list of tuple)는 이름 그대로 여러 개의 튜플을 하나의 리스트로 감싼 형태를 의미합니다.

dict.fromkeys 메서드는 지정된 키와 값을 가지는 새로운 딕셔너리를 반환합니다. 이 메서드를 사용하면 중복된 값을 제거하면서 요소별 발생 정보를 손쉽게 처리할 수 있습니다.

예제 코드

def sort_on_occurence(my_lst):
   my_dict = {}
   for i, j in my_lst:
      my_dict.setdefault(i, []).append(j)
   return([(i, *dict.fromkeys(j), len(j))
      for i, j in my_dict.items()])

my_list = [(1, 'Harold'), (12, 'Jane'), (4, 'Paul'), (7, 'Will')]
print("The list of tuples is")
print(my_list)
print("The list after sorting by occurence is")
print(sort_on_occurence(my_list))

실행 결과

The list of tuples is
[(1, 'Harold'), (12, 'Jane'), (4, 'Paul'), (7, 'Will')]
The list after sorting by occurence is
[(1, 'Harold', 1), (12, 'Jane', 1), (4, 'Paul', 1), (7, 'Will', 1)]

코드 설명

  • sort_on_occurence라는 함수를 정의하고, 매개변수로 튜플 리스트를 전달받습니다.
  • 함수 내부에서 새로운 빈 딕셔너리를 생성합니다.
  • 튜플 리스트를 순회하면서 setdefault 메서드를 사용해 각 키(첫 번째 요소)에 해당하는 값들을 리스트 형태로 딕셔너리에 저장합니다.
  • 이후 dict.fromkeys를 통해 중복 없이 값을 정리하고, len(j)로 발생 횟수를 계산하여 결과 튜플을 구성합니다.
  • 튜플 리스트를 정의한 뒤 콘솔에 출력합니다.
  • 정의된 함수에 해당 리스트를 인자로 넘겨 호출합니다.
  • 정렬된 결과가 콘솔에 출력됩니다.

이 예제에서는 모든 첫 번째 요소가 한 번씩만 등장했기 때문에 각 튜플 끝에 발생 횟수 1이 추가된 것을 확인할 수 있습니다. 만약 동일한 첫 번째 요소를 가진 튜플이 여러 개 있다면, 해당 요소의 발생 횟수가 함께 표시되어 데이터 분석에 유용하게 활용할 수 있습니다.