반응형 Sorted2 파이썬 heapq 커스텀 정렬 이용하기 파이썬에서 커스텀 정렬을 이용할 때 리턴값을 True False가 아닌 1, -1로 해주어야 함을 확인하였다. 이번에는 여러개의 멤버변수를 가진 클래스를 heapq를 이용해 heap을 만들어줄 때 custom comparator를 어떻게 이용하는지 알아보자. 결론부터 말하면 class 안에 __lt__(self, other) 함수를 재정의 해 주고 return 값은 True False로 해주면 된다. 이유는 간단하다. heapq의 소스코드를 분석해보면 힙정렬을 할 때 연산기호로 < 를 사용하기 떄문에 __lt__ 재정의 해 주어야 한다 위에 보면 연산기호가 < 인것을 확인할 수 있다 import heapq class node: def __init__(self, A, B): self.A = A self.B.. 2021. 3. 10. 파이썬 커스텀 정렬 이용하기 파이썬 3.x 이상 버전 from functools import cmp_to_key def comp(x, y): if x[0] 0 def __eq__(self, other): return mycmp(self.obj, other.obj) == 0 def __le__(self, other): return mycmp(self.obj, other.obj) = 0 __hash__ = None return K 리스트 내부 sort 안에 custom comparator를 넣어주는 케이스도 위와 동일하다. l.sort(key=cmp_to_key(comp)) 파이썬 2.x 버전 def custom_cmp(x, y): if x[0] > y[0]: return True else: return -1 l = [] l.appen.. 2021. 3. 10. 이전 1 다음 반응형