默认字典,其值默认为负无穷大

问题描述 投票:0回答:1

我想创建一个默认字典,其中默认值为负无穷大。我尝试做

defaultdict(float("-inf"))
但它不起作用。我该怎么做?

python defaultdict
1个回答
17
投票

正如回溯特别告诉你的那样

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

© www.soinside.com 2019 - 2024. All rights reserved.