web-dev-qa-db-ja.com

Pythonのコレクションのデフォルトの文字列値を設定します。

Python 3.2.3を使用しており、返されるデフォルトの文字列値を変更したい:

from collections import defaultdict
d=defaultdict(str)
d["NonExistent"]

返される値は''。これを変更して、キーが見つからないときに"unknown"は空の文字列の代わりに返されますか?

40
jftuga

Defaultdictの引数は、デフォルト値を返す関数(または、呼び出し可能なオブジェクト)です。したがって、希望するデフォルトを返すラムダを渡すことができます。

>>> from collections import defaultdict
>>> d = defaultdict(lambda: 'My default')
>>> d['junk']
'My default'

ラムダを説明するために編集:

ラムダは、名前を付けずに関数を定義するための省略形にすぎません。明示的なdefでも同じことができます。

>>> def myDefault():
...     return 'My default'
>>>> d = defaultdict(myDefault)
>>> d['junk']
'My default'

詳細は ドキュメント を参照してください。

61
BrenBarn