如何根据key为python defaultdict生成值

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

在python中,是否可以为defaultdict生成一个值,该值是键的函数? 例如:

from collections import defaultdict
d = defaultdict(lambda key=None: key * 2)

这样

d[1]
将产生值 2。

python defaultdict
1个回答
0
投票

defaultdict
无法执行此操作,因为它的
default_factory
从未传递密钥,但您可以通过在
__missing__()
的子类上定义
dict
来自己实现此功能(如here所述),或者,更方便的是
collections.UserDict

from collections import UserDict

class MyDefaultDict(UserDict):
    def __missing__(self, key):
        value = key * 2
        self.data[key] = value
        return value

d = MyDefaultDict({1: 3})
print(d[1])  # -> 3
print(d[2])  # -> 4
print(d)  # -> {1: 3, 2: 4}
© www.soinside.com 2019 - 2024. All rights reserved.