既然你在考虑一套,我想原来的顺序并不重要。如果是这样,一个选项是添加
__lt__
方法,以便可以按分数比较对象。然后按相反的顺序对元组进行排序,按整数分组,并从每个组中获取第一个项。在代码中比解释更容易看到:
from itertools import groupby
class myObject:
def __init__(self, score):
self.score = score
def __repr__(self):
return f'<Object {self.score}>'
def __lt__(self, other):
return self.score < other.score
pairs = [(1, myObject(1)), (1, myObject(1)), (3, myObject(7)), (9, myObject(3)), (9, myObject(4))]
[next(v) for k, v in groupby(sorted(pairs, reverse=True), key=lambda x: x[0])]
结果
[(9, <Object 4>), (3, <Object 7>), (1, <Object 1>)]