对类实例Python列表进行排序

时间:2010-10-24 20:35:39

标签: python sorting

我有一个类实例列表 -

x = [<iteminstance1>,...]

该类具有score属性。如何根据此参数按升序对项目进行排序?

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

2 个答案:

答案 0 :(得分:130)

除了您接受的解决方案之外,您还可以在类上实现特殊的__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()

答案 1 :(得分:89)

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

如果您想要就地排序x,您还可以:

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