设置Python的collections.defaultdict的默认字符串值

jft*_*uga 38 python collections

我正在使用Python 3.2.3并希望更改默认返回的字符串值:

from collections import defaultdict
d=defaultdict(str)
d["NonExistent"]
Run Code Online (Sandbox Code Playgroud)

返回的值是''.如何更改此设置,以便在找不到密钥时"unknown"返回而不是空字符串?

Bre*_*arn 60

defaultdict的参数是一个返回默认值的函数(或者更确切地说是一个可调用对象).因此,您可以传入一个返回所需默认值的lambda.

>>> from collections import defaultdict
>>> d = defaultdict(lambda: 'My default')
>>> d['junk']
'My default'
Run Code Online (Sandbox Code Playgroud)

编辑解释lambda:

lambda只是定义函数而不给它命名的简写.您可以使用显式def执行相同的操作:

>>> def myDefault():
...     return 'My default'
>>>> d = defaultdict(myDefault)
>>> d['junk']
'My default'
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档.