python/python

cmp_to_key 정렬

danuri 2021. 3. 9. 15:43

functools 라이브러리를 사용해서 정렬 시 직접 비교 함수를 만들 수 있다.

 

import functools

def comparator(a,b):
    if a>b:
        return 1
    elif a==b:
        return 0
    else:
        return -1

data=[5,3,1,2,4]
data.sort(key=functools.cmp_to_key(comparator))
print(data)

 

리스트에서 두 원소 a, b를 비교할 때 a가 b보다 크다면 1, 같다면 0, 작다면 -1을 리턴해서 비교한 값을 기반으로 오름차순으로 정렬하는 방식이다.

 

lambda로 정렬하기 까다로운 조건에 대해서 위 방법을 사용하면 편리하다. cumtom한 comparator를 만들 수 있다는 장점이 있다.