#!/bin/env python
# coding: utf-8

#===========================================================================
# 수행시간 측정을 위한 코드
import timeit
start = timeit.default_timer()
#===========================================================================

 

1. List 를 입력받아 빈도 수 순서대로 정렬하는 코드

#===========================================================================
# 리스트를 입력받아 빈도 수 순서로 정렬하는 코드
from collections import Counter

def frequency_sort(data):
	rt_data = []
	for d, c in Counter(data).most_common():
		for i in range(c):
			rt_data.append(d)
	return rt_data
#==========================================================================

 

2. 테스트 코드

#===========================================================================
# 실행영역
if __name__ == '__main__':
	print(frequency_sort([4, 6, 2, 2, 6, 4, 4, 4])) # 예상 실행결과 :  [4, 4, 4, 4, 6, 6, 2, 2]
	print(frequency_sort([4, 6, 2, 2, 6, 4, 2, 4, 4])) # 예상 실행결과 :  [4, 4, 4, 4, 2, 2, 2, 6, 6]
	print(frequency_sort(['b', 'b', 'c', 'a', 'b'])) # 예상 실행결과 :  ['b', 'b', 'b', 'c', 'a']
	print(frequency_sort([17, 99, 42])) # 예상 실행결과 :  [17, 99, 42]
	print(frequency_sort([])) # 예상 실행결과 :  []
	print(frequency_sort([1])) # 예상 실행결과 :  [1]
#===========================================================================

 

3. 실행결과

 

4. 참고(고수의 해결방법)

def frequency_sort(data):
    return sorted(data, key=lambda x: (-data.count(x), data.index(x)))
반응형

+ Recent posts