【发布时间】:2015-03-23 07:32:23
【问题描述】:
我有一个 python 中的对象列表,我想根据属性进行排序。
例如:
abc 是一个具有 id 和 count 属性的类。
我有一个 abc 类的列表对象。
list=[abc('1',120),abc('2',0),abc('0',180),abc('5',150)].
我想按属性'count'的升序对列表进行排序
我已经使用了:
list.sort(key=attrgetter('count'))
我发现使用分析我的 python 脚本需要大量时间进行排序。
任何人都可以提出一种更好和更快的方法来根据属性对对象列表进行排序,从而最大限度地减少排序时间。
【问题讨论】:
-
排序比什么要花更多时间?
-
比较多的时间?
-
我相信这意味着它比没有键或比较器功能的排序需要更多时间,正如您从我的回答中看到的那样。
-
一个想法:尝试将适当的
__slots__添加到您的abc类定义中。 -
通过
list.sort(key=..)排序已经很不错了。也许您可以通过减少排序来减少排序时间。
标签: python list python-2.7 sorting