0

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

4

2 回答 2

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)
于 2013-06-06T16:17:50.403 回答
0

“......或者我应该在我创建的类中定义所有比较方法。”

您可以使用该functools模块:

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

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

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

于 2013-06-06T16:37:42.723 回答