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를 만들 수 있다는 장점이 있다.
'python > python' 카테고리의 다른 글
[Python] 비트 연산자 (4) | 2022.01.17 |
---|---|
[Python] datetime - fromtimestamp() (타임스탬프를 날짜로 변환하기) (0) | 2021.08.26 |
우선순위 큐 (0) | 2021.02.09 |
이진 탐색 트리 (0) | 2021.02.09 |
그래프 (0) | 2021.02.09 |