Pythonのcollections
モジュールにはCounter
という便利なクラスがあります。これはハッシャブルなオブジェクトを数えるためのdict
のサブクラスで、要素は辞書のキーとして格納され、そのカウントは辞書の値として格納されます。
Counter
をソートする方法はいくつかあります。
Counter.most_common([N])
メソッドを使用する.sorted()
を使用してキーだけをソートする.sorted()
を使用して与えられた(キー、値)ペアに基づいて値をソートする
それぞれの方法について詳しく見ていきましょう。
Counter.most_common([N])
メソッドを使用する
このメソッドは、カウンターの最も一般的な要素から最も一般的でない要素へのカウントのソートされたリストを返します。Nが省略されると、カウンターのすべての要素を返します。Nが指定されている場合、返されるリストの最初のN要素のみを返します。
from collections import Counter
x = Counter({'a':5, 'b':3, 'c':7})
print(x.most_common())
このコードは、[('c', 7), ('a', 5), ('b', 3)]
を出力します。
.sorted()
を使用してキーだけをソートする
.sorted()
メソッドは、任意のイテラブルをソートするために使用されます。ここでは、イテラブルとしてカウンターオブジェクトを使用します。
from collections import Counter
x = Counter({'a':5, 'b':3, 'c':7})
sorted(x, key=x.get, reverse=True)
このコードは、['c', 'a', 'b']
を出力します。
これらの方法を使えば、PythonのCounter
を効率的にソートすることができます。適切な方法を選んで、あなたのアプリケーションに適したソートを行いましょう。