Python 排序用户定义类的快速方法
我在python中有一个类,其中一个实例变量是整数。现在,当我在一个列表中有一些,如果我调用该列表上的sort方法,我希望它们按整数实例变量排序。有没有一种方法可以快速/有效地做到这一点,或者我应该在我创建的类中定义所有的比较方法Python 排序用户定义类的快速方法,python,class,sorting,Python,Class,Sorting,我在python中有一个类,其中一个实例变量是整数。现在,当我在一个列表中有一些,如果我调用该列表上的sort方法,我希望它们按整数实例变量排序。有没有一种方法可以快速/有效地做到这一点,或者我应该在我创建的类中定义所有的比较方法 from operator import attrgetter print sorted(your_objects, key=attrgetter('the name of your int')) 或: 您还可以使用lambda代替运算符。attrgetter:
from operator import attrgetter
print sorted(your_objects, key=attrgetter('the name of your int'))
或:
您还可以使用lambda
代替运算符。attrgetter
:
your_list.sort(key=lambda L: L.your_int)
“…或者我应该定义我创建的类中的所有比较方法。”
您可以使用functools
模块:
要实现部分自动化,请在类中定义“小于”和“等于”方法,然后使用total_ordering类装饰器生成其余方法。请参阅文档中提供的total_ordering示例,您不会出错
我认为这是一种更好的方法,而不是在您的代码中的每种情况下都提供
key=blah
,以便对类实例进行排序。我个人更喜欢lambda
。
your_list.sort(key=lambda L: L.your_int)