辞書のgetとsetdefault
辞書に存在しないキーを普通に[]で参照するとKeyErrorになります。
>>> d = {} >>> d['foo'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'foo'
d.get()を使うと、キーが存在しない場合に返却するデフォルト値を指定できます。が、dの中自体は変更しません。
d.setdefault()を使うと、キーが存在しない場合はデフォルト値を返却し、かつdの中も変更してくれます。
>>> d.get('foo', 'bar') 'bar' >>> d {} >>> d.setdefault('foo', 'bar') 'bar' >>> d {'foo': 'bar'}
if not statetab.has_key((w1, w2)): statetab[(w1, w2)] = [] statetab[(w1, w2)].append(word)
というコードは
statetab.setdefault((w1, w2), []).append(word)
と書き直せますね。