Если ваши атрибуты числовые, у вас есть это.
def mixed_order( a ):
return ( a.attribute1, -a.attribute2 )
someList.sort( key=mixed_order )
Если ваши атрибуты включают строки или другие более сложные объекты, у вас есть несколько вариантов.
Метод .sort()
стабилен: вы можете сделать несколько проходов. Это, пожалуй, самый простой. Это также замечательно быстро.
def key1( a ): return a.attribute1
def key2( a ): return a.attribute2
someList.sort( key=key2, reverse=True )
someList.sort( key=key1 )
Если это единственная сортировка, вы можете определить свои собственные специальные операторы сравнения. Как минимум, вам нужно __eq__
и __lt__
. Остальные четыре могут быть получены из этих двух с помощью простой логики.