按属性排序对象列表的最有效方法?

时间:2013-10-21 14:31:41

标签: python list

我有一个(小)对象列表,我想按属性排序,降序。

如:

obj1.age = 1
obj2.age = 2
obj3.age = 3

list = [obj3,obj2,obj1]

2 个答案:

答案 0 :(得分:8)

使用operator.attrgetter.sort

from operator import attrgetter
your_list.sort(key=attrgetter('age'), reverse=True)

答案 1 :(得分:5)

由于您的列表很小,因此无需导入operator.attrgetter。使用带有sorted功能的lambda也会同时运行:

sorted(lst, key=lambda x: x.age, reverse=True)

在上面的代码中,lst是列表。我更改了名称,因为命名变量list是不好的做法,因为这样做会掩盖内置函数。

此外,此解决方案不是就地解决方案。意思是,您可以将其分配给变量:

new_lst = sorted(lst, key=lambda x: x.age, reverse=True)