I 클래스가 있습니다. 적절하게는 predictions
이라고 부릅니다.파이썬 사용자 정의 클래스의 정렬 된 목록을 가져옵니다은
predictions
을 클래스의 start
속성으로 정렬하고 싶습니다. 이 같은
뭔가 :
predictions_start_order = sorted(predictions, key=start)
작동하지 않습니다. 내가 뭘 놓치고 있니?
I 클래스가 있습니다. 적절하게는 predictions
이라고 부릅니다.파이썬 사용자 정의 클래스의 정렬 된 목록을 가져옵니다은
predictions
을 클래스의 start
속성으로 정렬하고 싶습니다. 이 같은
뭔가 :
predictions_start_order = sorted(predictions, key=start)
작동하지 않습니다. 내가 뭘 놓치고 있니?
의 인수는 이며 속성이 아닙니다. 당신이 찾고있는 것은 :
이class Prediction():
def __init__(self, l):
self.start = l[0]
self.end = l[1]
self.score = l[2]
def __lt__(self, other):
return self.start < other.start
이 의지가 자동으로이 클래스의 인스턴스의 반복 가능한 주문 sorted
수 있습니다.
실제로 파이썬에서 정렬하는 데는 __lt__
만 필요하지만 PEP8은 모든 비교 기능을 구현하거나 total_ordering
데코레이터를 사용하는 것이 좋습니다.
FWIW, PEP 8은 __lt__을 사용하여 구현하는 것이 아니라 6 가지의 풍부한 비교를 모두 정의 할 것을 권장합니다. 또는, functools.total_ordering을 사용하여 누락 된 메소드를 채울 수 있습니다. –
@RaymondHettinger 이미 내 게시물 중 다른 것에 대한 이전 코멘트를 기반으로하는 내용이 이미 포함되어 있습니다. 세부 사항을 추가하기 전에 핵심 답변을 얻고 싶었습니다. – agf
항상 한 필드로 정렬하려는 경우이 솔루션이 마음에 듭니다. 예를 들어'start'가'Prediction' 클래스의 열쇠라면, 나는이 메소드를 선호합니다. – zzz