我需要一个字典,当访问缺少的键时自动填充默认值。我找到了defaultdict和其他一些方法来实现这一点,但在我的情况下问题是我想让每个键的默认值特定于该键本身。
例如,使用defaultdict,我可以实现以下内容:
例如,使用defaultdict,我可以实现以下内容:
from collections import defaultdict
d = defaultdict(lambda: 5)
> d[1] = 3
> d[1]
> 3
> d[2]
> 5
但是如果我需要访问缺失的键的默认值为例如 key + 5
,该怎么办呢?类似这样:
from collections import defaultdict
d = defaultdict(lambda key: key + 5) # <-- This does not work as defaultdict expects lambda function to be without any parameters
> d[1] = 3
> d[1]
> 3
> d[2]
> 7 <- Calculated from accessed key + 5 (2+5)
> d[5]
> 10 <- Calculated from accessed key + 5 (5+5)
有没有一种干净、内置的方法可以实现我需要的功能?我知道可以创建字典的子类并在__getitem__
级别上实现特定功能,但如果可能的话,我想避免这样做。
我在其他答案中找不到解决方案,如果仍然是重复,请原谅。
defaultdict
只能与没有参数的 lambda 函数一起使用,因此第二个示例不是有效的 Python 代码。 - Cxovrika