Python で文字列中の各文字の出現回数をカウントする方法をご紹介します。
dict でカウント
まずは、最もシンプルな dict 型を使った方法から。
string = 'supercalifragilisticexpialidocious'
counter = {}
for c in string:
if not c in counter:
counter[c] = 1
else:
counter[c] += 1
print(counter) # => {'a': 3, 'c': 3, 'e': 2, ...
defaultdict でカウント
つづいて、 collections ライブラリの defaultdict を使った方法。デフォルト値を決められる分、よりシンプルに書くことができます。
from collections import defaultdict
string = 'supercalifragilisticexpialidocious'
# デフォルト値が 0 の辞書を定義してカウンタとして使う
counter = defaultdict(lambda: 0)
for c in string:
counter[c] += 1
print(dict(counter)) # => {'a': 3, 'c': 3, 'e': 2, ...
Counter でカウント
さらに Python 2 系では Python 2.7 から導入された Counter クラスを使った方法もあります。 こちらは Counter の名前のとおり、カウンタとしてそのまま利用できる機能を備えたクラスなので、さらにシンプルにカウンタを実現することができます。
from collections import Counter
string = 'supercalifragilisticexpialidocious'
# string を渡して Counter インスタンスを生成
counter = Counter(string)
print(counter['a']) # => 3
print(dict(counter)) # => {'a': 3, 'c': 3, 'e': 2, ...
以上です。