【Python】for文で文字の出現回数をカウント
目次
基本的な文字出現回数カウント
Pythonでは、`for` 文を使って文字列の各文字を順番に処理し、出現回数を数えることができます。
text = "banana"
count = 0
for char in text:
if char == "a":
count += 1
print(count) # 出力: 3
この例では、文字列 “banana” の中に “a” が何回含まれているかを数えています。
辞書を使ったカウント
複数の文字の出現回数を数えたい場合は、辞書を使うと便利です。
text = "banana"
char_count = {}
for char in text:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
print(char_count) # 出力: {'b': 1, 'a': 3, 'n': 2}
この方法では、すべての文字の出現回数を記録できます。
defaultdictを使ったカウント
辞書の初期値を設定する `defaultdict` を使うと、コードを簡潔にできます。
from collections import defaultdict
text = "banana"
char_count = defaultdict(int)
for char in text:
char_count[char] += 1
print(dict(char_count)) # 出力: {'b': 1, 'a': 3, 'n': 2}
`defaultdict(int)` を使うと、新しいキーの初期値を `0` にできるので、`if` 文が不要になります。
collections.Counterを使う方法
`collections.Counter` を使うと、さらに簡単に文字の出現回数を求められます。
from collections import Counter
text = "banana"
char_count = Counter(text)
print(char_count) # 出力: Counter({'a': 3, 'n': 2, 'b': 1})
`Counter` は辞書のように動作し、各文字の出現回数を保持します。
count() メソッドを使う方法
特定の文字の出現回数を知りたい場合は、`count()` メソッドが便利です。
text = "banana"
count_a = text.count("a")
print(count_a) # 出力: 3
この方法はシンプルですが、全ての文字のカウントには向いていません。
各手法の比較と推奨
方法 | 利点 | 欠点 |
---|---|---|
for文 + if文 | 基本を学ぶのに適している | 特定の文字しか数えられない |
辞書を使う方法 | すべての文字をカウントできる | `if` 文が必要でコードが長い |
defaultdict を使う方法 | `if` 文が不要でシンプル | 辞書をインポートする必要がある |
Counter を使う方法 | 一番簡潔で、汎用性が高い | 外部ライブラリが必要(ただし標準ライブラリ) |
count() メソッド | 特定の文字のカウントには最適 | 全体のカウントには向いていない |
文字出現回数を求める最も簡単で効率的な方法は `Counter` です。しかし、特定の用途によって `defaultdict` や `count()` も有効です。