defaultdict がない

Python の基本的なデータ構造の1つに dict (辞書) があります。 dict は別名マッピングとも呼ばれ、キーに対して値を紐付けて登録することができます。

>>> d = {"one": 1, "two": 2}
>>> d["three"] = 3
>>> d["one"]
1
>>> d["zero"]
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
KeyError: 'zero'

上記の例の最後のように、存在しないキーを参照すると例外が発生します。

これを踏まえて、ある文字列中にそれぞれの文字が何回出現したかを数える プログラムを書いてみましょう。

s = "abrakadabra"

d = {}
for c in s:
    # d[c] += 1 としたいが、これだと最初に代入するときにエラーになる
    d[c] = d.get(c, 0) + 1

存在しないキーを参照した時のことをいちいち考えて書かないといけないので面倒です (間違いが多くなります)。

defaultdict を使えばすっきり書けます。

from collections import defaultdict

s = "abrakadabra"

d = defaultdict(int)
for c in s:
    d[c] += 1

collections モジュールに defaultdict が追加されたのは Python 2.5 からなので、 Python 2.4 では使えません。