辞書(ディクショナリ―)内の各キーの出現回数をカウントする方法を説明します。
キーはリストの各要素としています。
for文を使用
後述の辞書内包表記とcount関数を使用する方法より処理時間が短いです。後述の方法と比較すると処理時間が短く、タイプ数はそれほど変わらないため、本方法をおすすめします。
l = ["beer", "on", "bear", "in", "beer"] d = dict() for k in l: d[k] = d.get(k, 0) + 1 print(d) """出力 {'beer': 2, 'on': 1, 'bear': 1, 'in': 1} """
- d = dict()によって空の辞書を作成します。
- d.get(k, 0)の結果は、k(キー)が辞書にある場合は対応する値、無い場合は0です。d.get(k, 0)に+1をすることで、キーの出現回数がカウントされます。
下記を参考にしました。
python – Using a dictionary to count the items in a list – Stack Overflow(mmmdreg)
辞書内包表記とcount関数を使用
前述のfor文を使用した方法よりも行数が少ない点は良いですが、計算量が大きいです(*1)。処理時間が重要な場合は、本方法はおすすめできません。
- (*1) :辞書内包表記とcount関数内、合わせて2つのfor文があるため、計算量はO(n^2)。
ソース:cpython/listobject.c at main · python/cpython · GitHub(2560行目)
l = ["beer", "on", "bear", "in", "beer"] d = {k:l.count(k) for k in l} print(d) """出力 {'beer': 2, 'on': 1, 'bear': 1, 'in': 1} """
下記を参考にしました。
python – Using a dictionary to count the items in a list – Stack Overflow(Ashish Kumar Verma)
コメント
[…] 辞書では、存在しない要素にアクセスをするとエラーが発生します。Counterでエラーが発生しません。辞書を使って各キーの出現回数をカウントする方法はpython 辞書(ディクショナリ―)内の各キーの出現回数をカウント!を参照してください。 […]