用户定义类的快速排序方法

时间:2013-06-06 16:15:26

标签: python class sorting

我在python中有一个类,其中一个实例变量是一个整数。现在,如果我在列表中调用sort方法,那么当我在列表中有一些时,我希望它们按整数实例变量排序。有没有办法快速/有效地做到这一点,或者我应该在我所做的课程中定义所有的比较方法。

2 个答案:

答案 0 :(得分:2)

from operator import attrgetter

print sorted(your_objects, key=attrgetter('the name of your int'))

或者:

your_list.sort(key=attrgetter('the name of your int'))

您也可以使用lambda代替operator.attrgetter

your_list.sort(key=lambda L: L.your_int)

答案 1 :(得分:0)

“......或者我应该只定义我所制作的课程中的所有比较方法。”

您可以使用functools模块:

http://docs.python.org/2/library/functools.html

自动化部分 - 在类中定义less和equality方法,然后使用total_ordering类装饰器生成其余的。请参阅文档中为total_ordering提供的示例,您不会出错!

我认为这是一种更好的方法,然后在您希望对类实例进行排序的代码中为每种情况提供key=blah