关于排序:排序类实例列表python

Sort a list of Class Instances Python

本问题已经有最佳答案,请猛点这里访问。

我有一个类实例列表-

1
x = [<iteminstance1>,...]

在其他属性中,类具有score属性。如何根据此参数按升序对项目排序?

编辑:python中的list有一个叫做sort的东西。我可以在这里用这个吗?如何引导该函数使用我的score属性?


除了您接受的解决方案之外,您还可以在类上实现特殊的__lt__()方法("小于")。然后,sort()方法(和sorted()函数)将能够比较对象,从而对它们进行排序。然而,当您只在这个属性上对它们进行排序时,这是最有效的。

1
2
3
4
5
6
7
8
9
10
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()


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

如果要就地对X进行排序,还可以:

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