Defaultdict,其值默认为负无穷大

时间:2015-04-27 16:48:14

标签: python defaultdict

我想创建一个默认字典,默认值为负无穷大。我试过defaultdict(float("-inf")),但它没有用。我该怎么做?

1 个答案:

答案 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?)。