我想创建一个默认字典,其中默认值为负无穷大。我尝试做
defaultdict(float("-inf"))
但它不起作用。我该怎么做?
正如回溯特别告诉你的那样:
>>> from collections import defaultdict
>>> dct = defaultdict(float('-inf'))
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
dct = defaultdict(float('-inf'))
TypeError: first argument must be callable
和根据文档(强调我的):
如果
[default_factory
的第一个参数]不是defaultdict
,则不带参数调用为给定键提供默认值,该值将插入到键的字典中,并返回.None
float('-inf')
不可 可调用。相反,你可以这样做:
dct = defaultdict(lambda: float('-inf'))
提供可调用的“lambda 表达式”,返回默认值。出于同样的原因,您会看到带有以下内容的代码:
defaultdict(int)
而不是defaultdict(0)
:
>>> int() # callable
0 # returns the desired default value
您也会遇到类似的问题,例如尝试将
defaultdict
嵌套在一起(参见 defaultdict 的 defaultdict?)。