【发布时间】:2015-05-20 15:54:32
【问题描述】:
DefaultDicts 是有用的对象,它能够拥有一个字典,该字典可以使用用于定义默认值的可调用函数动态创建新键。例如。使用str 将空字符串设为默认值。
>>> food = defaultdict(str)
>>> food['apple']
''
您还可以使用 lambda 将表达式设为默认值。
>>> food = defaultdict(lambda: "No food")
>>> food['apple']
'No food'
但是,您不能将任何参数传递给此 lambda 函数,这会在尝试调用它时导致错误,因为您实际上无法将参数传递给该函数。
>>> food = defaultdict(lambda x: "{} food".format(x))
>>> food['apple']
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
即使你尝试提供参数
>>> food['apple'](12)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
这些 lambda 函数如何能够响应而不是死板的表达式?
【问题讨论】:
标签: python lambda defaultdict