###
1 `defaultdict` の使用例

`list`を`default_factory`とすることで、キー=値ペアのシー ケンスをリストの辞書へ簡単にグループ化できます。

    >>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
    >>> d = defaultdict(list)
    >>> for k, v in s:
            d[k].append(v)

    >>> d.items()
    [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

それぞれのキーが最初に登場したとき、マッピングにはまだ存在しません。 そのためエントリは`default_factory`関数が返す空の`list` を使って自動的に作成されます。 `list.append()`操作は新しいリストに紐付けられます。 キーが再度出現下場合には、通常の参照動作が行われます(そのキーに対応す るリストが返ります)。そして `list.append()`操作で別の値をリスト に追加します。このテクニックは`dict.setdefault()`を使った等価な ものよりシンプルで速いです:

    >>> d = {}
    >>> for k, v in s:
    	d.setdefault(k, []).append(v)

    >>> d.items()
    [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

`default_factory` を `int` にすると、`defaultdict` を(他の言語の bag や multisetのように)要素の数え上げに便利に使うことができます:

    >>> s = 'mississippi'
    >>> d = defaultdict(int)
    >>> for k in s:
            d[k] += 1

    >>> d.items()
    [('i', 4), ('p', 2), ('s', 4), ('m', 1)]

最初に文字が出現したときは、マッピングが存在しないので `default_factory` 関数が `int()`を呼んでデフォルトのカ ウント0 を生成します。インクリメント操作が各文字を数え上げます。 このテクニックは以下の `dict.get()`を使った等価なものよりシンプ ルで速いです:

    >>> d = {}
    >>> for k in s:
    	d[k] = d.get(k, 0) + 1

    >>> d.items()
    [('i', 4), ('p', 2), ('s', 4), ('m', 1)]

`default_factory` を `set` に設定することで、 `defaultdict`をセットの辞書を作るために利用することができます:

    >>> s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
    >>> d = defaultdict(set)
    >>> for k, v in s:
            d[k].add(v)

    >>> d.items()
    [('blue', set([2, 4])), ('red', set([1, 3]))]