読者は、key= メソッドが次のようになっていることに気付くはずです。
ut.sort(key=lambda x: x.count, reverse=True)
オブジェクトに豊富な比較演算子を追加するよりも何倍も高速です。これを読んで驚いた(「Python in a Nutshell」の485ページ)。この小さなプログラムでテストを実行することで、これを確認できます。
#!/usr/bin/env python
import random
class C:
def __init__(self,count):
self.count = count
def __cmp__(self,other):
return cmp(self.count,other.count)
longList = [C(random.random()) for i in xrange(1000000)] #about 6.1 secs
longList2 = longList[:]
longList.sort() #about 52 - 6.1 = 46 secs
longList2.sort(key = lambda c: c.count) #about 9 - 6.1 = 3 secs
私の非常に最小限のテストでは、最初の並べ替えは 10 倍以上遅いことが示されていますが、本によると、一般的には約 5 倍遅いだけです。彼らが言う理由は、python(timsort)で使用される高度に最適化されたソートアルゴリズムによるものです。
それでも、.sort(lambda) が単純な古い .sort() よりも高速であることは非常に奇妙です。彼らがそれを修正することを願っています。