PythonのCounterの使い方と代替案

Pythonで配列の要素ごとの数を調べる方法をまとめます。

collectionsのCounterを使う

標準ライブラリのcollectionsを使います。
Counterというサブクラスがありこれを使うと要素を数えられます。

import collections

a=["apple","banana","carrot","apple"]
print(collections.Counter(a))

a="abca"
print(collections.Counter(a))

実行結果
Counter({‘apple’: 2, ‘banana’: 1, ‘carrot’: 1})
Counter({‘a’: 2, ‘b’: 1, ‘c’: 1})

関数を書く

collectionsというライブラリは標準ですが、Counter以外の使い道がわかりません。
であれば関数を書いてしまえばいいんじゃないかということで書いてみました。

def kaunta(parts):
  results={}
  for part in parts:
    if part in results:
      results[part]+=1
    else:
      results[part]=1
  return results

a=["apple","banana","carrot","apple"]
print(kaunta(a))

a="abca"
print(kaunta(a))

実行結果
{‘apple’: 2, ‘banana’: 1, ‘carrot’: 1}
{‘a’: 2, ‘b’: 1, ‘c’: 1}

別の関数

def kaunta_other(parts):
  temps=set(parts)
  results={}
  for temp in temps:
    results[temp]=0
  for part in parts:
    results[part]+=1
  return results

コメント

タイトルとURLをコピーしました