猿问

如何根据对象的属性对象列表进行排序?

如何根据对象的属性对象列表进行排序?

我有一个Python对象列表,我想根据对象本身的属性进行排序。清单如下:

>>> ut[<Tag: 128>, <Tag: 2008>, <Tag: <>, <Tag: actionscript>, <Tag: addresses>,
 <Tag: aes>, <Tag: ajax> ...]

每个对象都有一个计数:

>>> ut[1].count1L

我需要按下降的计数对列表进行排序。

我已经看到了几种方法,但我正在寻找Python中的最佳实践。


Smart猫小萌
浏览 831回答 3
3回答

jeck猫

#&nbsp;To&nbsp;sort&nbsp;the&nbsp;list&nbsp;in&nbsp;place...ut.sort(key=lambda&nbsp;x:&nbsp;x.count,&nbsp;reverse=True)#&nbsp;To&nbsp;return&nbsp;a&nbsp;new&nbsp;list,&nbsp;use&nbsp;the&nbsp;sorted()&nbsp;built-in&nbsp;function... newlist&nbsp;=&nbsp;sorted(ut,&nbsp;key=lambda&nbsp;x:&nbsp;x.count,&nbsp;reverse=True)更多关于按键排序

元芳怎么了

一种最快的方法,特别是当你的列表有很多记录的时候,就是使用operator.attrgetter("count")..但是,这可能在Python的预操作符版本上运行,所以最好有一个备用机制。那么,您可能需要执行以下操作:try:&nbsp;import&nbsp;operatorexcept&nbsp;ImportError:&nbsp;keyfun=&nbsp;lambda&nbsp;x:&nbsp;x.count&nbsp;#&nbsp;use&nbsp;a&nbsp;lambda&nbsp;if&nbsp;no&nbsp;operator&nbsp;moduleelse: &nbsp;keyfun=&nbsp;operator.attrgetter("count")&nbsp;#&nbsp;use&nbsp;operator&nbsp;since&nbsp;it's&nbsp;faster&nbsp;than&nbsp;lambdaut.sort(key=keyfun,&nbsp;reverse=True)&nbsp;#&nbsp;sort&nbsp;in-place
随时随地看视频慕课网APP

相关分类

Python
我要回答