我有一个类实例列表 -
x = [<iteminstance1>,...]
该类具有score
属性。如何根据此参数按升序对项目进行排序?
编辑:python中的list
有一个叫sort
的东西。我可以在这里用吗?如何指示此函数使用我的score
属性?
答案 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'))