객체 지향 접근
적용 가능한 경우 개체 정렬 논리를 만드는 것이 좋습니다 (해당되는 경우) 순서가 필요한 각 인스턴스에 포함되지 않고 클래스의 속성.
이를 통해 일관성을 보장하고 상용구 코드가 필요하지 않습니다.
최소한 이 기능이 작동하도록 지정 __eq__
하고 __lt__
조작 해야 합니다. 그런 다음을 사용하십시오 sorted(list_of_objects)
.
class Card(object):
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __eq__(self, other):
return self.rank == other.rank and self.suit == other.suit
def __lt__(self, other):
return self.rank < other.rank
hand = [Card(10, 'H'), Card(2, 'h'), Card(12, 'h'), Card(13, 'h'), Card(14, 'h')]
hand_order = [c.rank for c in hand] # [10, 2, 12, 13, 14]
hand_sorted = sorted(hand)
hand_sorted_order = [c.rank for c in hand_sorted] # [2, 10, 12, 13, 14]