我想创建一个默认字典,默认值为负无穷大。我试过defaultdict(float("-inf"))
,但它没有用。我该怎么做?
答案 0 :(得分:7)
由于追溯明确告诉您:
>>> 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
和per the documentation(强调我的):
如果
default_factory
[defaultdict
]的第一个参数不是None
,则不带参数调用为给定密钥提供默认值,此值将插入到键的字典中,并返回。
float('-inf')
不可调用。相反,你可以做例如:
dct = defaultdict(lambda: float('-inf'))
提供可调用的"lambda expression",返回默认值。这与你看到代码的原因相同。 defaultdict(int)
而不是defaultdict(0)
:
>>> int() # callable
0 # returns the desired default value
例如,您也会遇到类似的问题。试图将defaultdict
嵌套在彼此之内(参见Python: defaultdict of defaultdict?)。