# To sort the list in place...
ut.sort(key=lambda x: x.count, reverse=True)
# To return a new list, use the sorted() built-in function...
newlist = sorted(ut, key=lambda x: x.count, reverse=True)
try: import operator
except ImportError: keyfun= lambda x: x.count # use a lambda if no operator module
else: keyfun= operator.attrgetter("count") # use operator since it's faster than lambda
ut.sort(key=keyfun, reverse=True) # sort in-place
关于sorting by keys的更多信息。
读者应该注意到key=方法:
比向对象添加丰富的比较运算符快很多倍。我很惊讶地读到这篇文章(见“简单的Python”第485页)。您可以通过对这个小程序运行测试来确认这一点:
我的,非常小的,测试显示第一种速度慢了10倍多,但书上说它一般只慢了5倍左右。他们之所以这么说,是因为python中使用了高度优化的排序算法(timsort)。
不过,非常奇怪的是.sort(lambda)比普通的old.sort()要快。我希望他们能解决这个问题。
一种最快的方法是使用
operator.attrgetter("count")
,特别是当您的列表有很多记录时。但是,这可能在Python的操作前版本上运行,所以最好有一个回退机制。您可能需要执行以下操作,然后:相关问题 更多 >
编程相关推荐