[ 언어 및 문법 ]/Python

[Python] 커스텀 정렬 (cmp_to_key)

황찌옹 2022. 8. 10. 21:04

 

sort()나 lambda 함수를 통한 정렬을 넘어서

좀 더 정교한 정렬이 필요할 때

커스텀으로 정렬 함수를 만들어서 이용할 수 있다.

from functools import cmp_to_key

data = ["Foo1Bar", "Foo12Bar", "Foo00012Bar", ..., "foo4bar"]

def comp(x, y):
	
    # 두 대상 비교 후 [음수, 0, 양수] 중 하나 return
    # ex)
    
    if x[0]<y[0]: # or x[0]>y[0]
        return 1
        
    elif x[0] == y[0]:
        return 0
        
    else:
        return -1
    
    
result = sorted(data, key = cmp_to_key(comp)) # 커스텀 정렬 수행 및 결과 return

 

좀 더 공부하기!!

 

 

cf. [백준] 20210. 파일 탐색기

 

20210번: 파일 탐색기

첫 줄에 문자열의 개수 N(2 ≤ N ≤ 10,000)이 주어진다. 그 다음 N줄에 정렬할 문자열이 한 줄에 하나씩 주어진다. 모든 문자열의 길이는 100 이하이며, 알파벳 대소문자와 숫자로만 이루어져 있다.

www.acmicpc.net

 

cf. 참고

https://castlerain.tistory.com/72