Programing

클래스 인스턴스 Python 목록 정렬

crosscheck 2020. 12. 6. 21:11
반응형

클래스 인스턴스 Python 목록 정렬


클래스 인스턴스 목록이 있습니다.

x = [<iteminstance1>,...]

다른 속성 중에서 클래스에는 score속성이 있습니다. 이 매개 변수를 기준으로 항목을 오름차순으로 정렬하려면 어떻게해야합니까?

편집 : list파이썬에는 sort. 여기서 이걸 사용해도 될까요? 이 함수가 내 score속성 을 사용하도록 어떻게 지시 합니까?


import operator
sorted_x = sorted(x, key=operator.attrgetter('score'))

x를 제자리에서 정렬하려면 다음을 수행 할 수도 있습니다.

x.sort(key=operator.attrgetter('score'))

수락 한 솔루션 외에도 __lt__()클래스에 특수 ( "보다 작음") 메서드를 구현할 수도 있습니다 . 그러면 sort()메서드 (및 sorted()함수)가 개체를 비교하여 정렬 할 수 있습니다. 그러나이 속성에 대해서만 정렬 할 때 가장 잘 작동합니다.

class Foo(object):

     def __init__(self, score):
         self.score = score

     def __lt__(self, other):
         return self.score < other.score

l = [Foo(3), Foo(1), Foo(2)]
l.sort()

참고 URL : https://stackoverflow.com/questions/4010322/sort-a-list-of-class-instances-python

반응형