Defaultdict,其值默认为负无穷大

acc*_*lke -1 python defaultdict

我想创建一个默认字典,默认值为负无穷大.我尝试过,defaultdict(float("-inf"))但它不起作用.我该怎么做呢?

jon*_*rpe 9

跟踪专门告诉你:

>>> 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
Run Code Online (Sandbox Code Playgroud)

根据文件(强调我的):

如果default_factory[第一个参数defaultdict]不是None,则调用不带参数来为给定键提供默认值,该值将插入到键的字典中,然后返回.

float('-inf')不是调用.相反,你可以这样做:

dct = defaultdict(lambda: float('-inf'))
Run Code Online (Sandbox Code Playgroud)

提供可调用的"lambda表达式",返回默认值.出于同样的原因,你看到代码defaultdict(int)而不是defaultdict(0):

>>> int()  # callable
0  # returns the desired default value
Run Code Online (Sandbox Code Playgroud)

当你试图defaultdict在彼此之间嵌套时,你也会遇到类似的问题(参见Python:defaultdict of defaultdict?).