튜플 리스트를 첫 번째 요소의 발생 여부(빈도)를 기준으로 정렬해야 하는 경우, 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이 추가된 것을 확인할 수 있습니다. 만약 동일한 첫 번째 요소를 가진 튜플이 여러 개 있다면, 해당 요소의 발생 횟수가 함께 표시되어 데이터 분석에 유용하게 활용할 수 있습니다.