辞書との違い
実際にdefaultdict説明は、データ型容器モジュール、本質的に辞書(辞書)が、Pythonは自動的にキーの初期値が割り当てられていることです。
なぜこのようなコンテナを定義したいですか?
Pythonで辞書辞書はキーを介してアクセスされるためのキーが存在しない場合、それはKeyError例外"例外につながります。これを回避するためには、辞書のデフォルト値を提供するために、クラスのコレクションにdefaultdict()メソッドを使用することが可能です。
たとえば、周波数を計算します:
wordlist = ['a','b','b','c','e','e','e']
frequencies = {}
for word in wordlist:
frequencies[word] += 1
辞書は以下の方法を使用して解決することができる前に、インデックスが初期化されなければならないので、PythonはKeyError例外例外がスローされます。
wordlist = ['a','b','b','c','e','e','e']
frequencies = {}
for word in wordlist:
try:
frequencies[word] += 1
except Exception:
frequencies[word] = 1
print('word:',frequencies)
wordlist = ['a','b','b','c','e','e','e']
for word in wordlist:
if word in frequencies:
frequencies[word] += 1
else:
frequencies[word] = 1
collections.defaultdict使用
collections.defaultdictは、簡単にこの問題を解決することができます。
from collections import defaultdict
wordlist = ['a','b','b','c','e','e','e']
frequencies = defaultdict(int)
for word in wordlist:
frequencies[word] += 1
collections.defaultdictは、初期化するためのパラメータとしての機能を受け入れることができます。私たちは、0に初期化された周波数[単語]にしたい、あなたが使用することができますint()
defaultdictするパラメータとして、組み込み関数を、私たちは、引数なしのint型()、INT()と呼ばれるには0の値を返します。同時に、あなたも使用することができます組み込み関数のpythonの他の種類list()
のパラメータとして、などが挙げられます。
例えば:
import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
# defaultdict
d = collections.defaultdict(list)
for k, v in s:
d[k].append(v)
# Use dict and setdefault
g = {}
for k, v in s:
g.setdefault(k, []).append(v)
ここでsetdefault()
あなたはまた、デフォルトの初期化のdict型の役割を達成することができます:
キーが辞書に存在しない場合、それはキーの値を追加し、キーが辞書に存在する場合、デフォルトは、キーのデフォルト値に設定され、元のキーを読み出します対応する値は、デフォルト値は、既存の債券で覆われていません。
dict.setdefault(key, default=None)
setdefault()
より多くの使用法は見ることができますブログを。