2013-10-21 64 views

回答

8

使用operator.attrgetter.sort

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

只是为了OP的好处:这是一个** inplace排序**,所以不要指望'your_list = your_list.sort(key = attrgetter('age'),reverse = True)'工作。为此,请使用iCodez中的'sorted'回答。 –

+0

@BurhanKhalid在效率方面存在差异,如果名单应该变得更大? – BSG

+0

我还会补充一点,'operator.attrgetter'会比iCodez提出的'lambda'更有效率......尽管小列表的效率好处不明显 –

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) 
+0

'x'是使用中的模型? – BSG

+0

@BSG - 的确如此。 'x'将被传递给'lambda',即对象。 – iCodez

+3

**降** *咳嗽* –

相关问题