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

Python – 요소 빈도(K)를 기준으로 리스트 정렬하는 방법

리스트에 포함된 특정 값 'K'의 등장 빈도를 기준으로 요소들을 정렬해야 할 때, collections 모듈의 Counter 클래스와 리스트 컴프리헨션(list comprehension)을 함께 사용하면 간결하고 효율적으로 처리할 수 있습니다.

예제

다음은 이를 구현한 예제 코드입니다.

from collections import Counter

my_list = [34, 56, 78, 99, 99, 99, 99, 99, 12, 12, 32, 51, 15, 11, 0, 0]

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

my_result = [item for items, c in Counter(my_list).most_common() for item in [items] * c]

print("The result is ")
print(my_result)

출력 결과

The list is
[34, 56, 78, 99, 99, 99, 99, 99, 12, 12, 32, 51, 15, 11, 0, 0]
The result is
[99, 99, 99, 99, 99, 0, 0, 12, 12, 32, 34, 11, 78, 15, 51, 56]

코드 설명

  • collections 모듈에서 Counter 클래스를 임포트하여 환경에 불러옵니다.

  • 정수로 이루어진 리스트를 정의한 뒤, 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용해 각 요소를 순회하며, most_common() 메서드를 호출해 요소별 등장 횟수를 빈도가 높은 순서대로 정렬된 (요소, 개수) 쌍으로 가져옵니다.

  • 각 요소를 자신의 빈도(c)만큼 반복하여 하나의 리스트로 다시 펼칩니다.

  • 이렇게 만들어진 정렬된 리스트를 변수 my_result에 할당합니다.

  • 최종 결과를 콘솔에 출력합니다.

실행 결과를 보면 가장 많이 등장한 99(5회)가 맨 앞에 위치하고, 그다음으로 두 번씩 등장한 012, 마지막으로 한 번씩만 등장한 나머지 요소들이 뒤따르는 것을 확인할 수 있습니다. 참고로 most_common()은 빈도가 같은 경우 원래 삽입된 순서를 유지하므로, 동일 빈도 요소들의 상대적 순서도 예측 가능합니다.