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

BSG*_*BSG 1 python list

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

如:

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

list = [obj3,obj2,obj1]
Run Code Online (Sandbox Code Playgroud)

Jon*_*nts 8

使用operator.attrgetter.sort:

from operator import attrgetter
your_list.sort(key=attrgetter('age'), reverse=True)
Run Code Online (Sandbox Code Playgroud)


iCo*_*dez 5

由于您的列表很小,因此无需导入operator.attrgetter.使用sortedlambda功能将运行一样好:

sorted(lst, key=lambda x: x.age, reverse=True)
Run Code Online (Sandbox Code Playgroud)

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

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

new_lst = sorted(lst, key=lambda x: x.age, reverse=True)
Run Code Online (Sandbox Code Playgroud)

  • **下降***咳嗽* (3认同)