我有一个(小)我想按属性降序排列的对象列表。按属性排序对象列表的最有效方法?
如:
obj1.age = 1
obj2.age = 2
obj3.age = 3
list = [obj3,obj2,obj1]
我有一个(小)我想按属性降序排列的对象列表。按属性排序对象列表的最有效方法?
如:
obj1.age = 1
obj2.age = 2
obj3.age = 3
list = [obj3,obj2,obj1]
使用operator.attrgetter
和.sort
:
from operator import attrgetter
your_list.sort(key=attrgetter('age'), reverse=True)
只是为了OP的好处:这是一个** inplace排序**,所以不要指望'your_list = your_list.sort(key = attrgetter('age'),reverse = True)'工作。为此,请使用iCodez中的'sorted'回答。 –
@BurhanKhalid在效率方面存在差异,如果名单应该变得更大? – BSG
我还会补充一点,'operator.attrgetter'会比iCodez提出的'lambda'更有效率......尽管小列表的效率好处不明显 –
你有问题吗? –