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