collections.defaultdictで辞書の初期値を設定する

辞書で単語の出現回数をカウントするようなコードのサンプル

初めて登場した単語のときだけ、インクリメントじゃなくて1を入れる処理をする必要がある

data = open("sample.txt").read()
words = data.split()

d = {}
for word in words:
    if word in d:
        d[word] += 1
    else:
        d[word] = 1

print d


collections.defaultdictを使うと最初から初期値を設定できるので便利

# coding=utf-8
import collections

data = open("sample.txt").read()
words = data.split()

d = collections.defaultdict(int)
for word in words:
    d[word] += 1

print d


defaultdictに渡す引数はdefault_factoryといって、存在しないキーの値を参照したときはdefault_factoryを引数なしで呼び出した値がデフォルト値になる。

上記のコードだとint()がデフォルト値になる

他にsetやlistを渡す使い道が考えられる


参考 : 8.3. collections ― 高性能なコンテナ・データ型 ― Python 2.7ja1 documentation