python - 有没有巧妙的方法将 key 传递给 defaultdict 的 default_factory?

标签 python dictionary defaultdict

一个类有一个带有一个参数的构造函数:

class C(object):
    def __init__(self, v):
        self.v = v
        ...

在代码中的某个地方,dict 中的值知道它们的键是很有用的。
我想使用带有传递给新生儿默认值的键的 defaultdict:

d = defaultdict(lambda : C(here_i_wish_the_key_to_be))

有什么建议吗?

最佳答案

它几乎不能称得上是 聪明 - 但子类化是你的 friend :

class keydefaultdict(defaultdict):
    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError( key )
        else:
            ret = self[key] = self.default_factory(key)
            return ret

d = keydefaultdict(C)
d[x] # returns C(x)

关于python - 有没有巧妙的方法将 key 传递给 defaultdict 的 default_factory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912231/

相关文章:

python - 如何将文本导出到新文件、用户输入?

Python:使用多处理分块处理大型字典

python - 如何可视化和理解这段代码

java - 如何将字典键值项目应用到spark数据集中的列?

python - 使用 XPath 在使用 python 的 <td> 单元格中获取文本

python - 正则表达式积极向前看

python - 如何在python中将一个字典结构转换为另一个字典

python - 如何将字典和数组保存在同一个存档中(使用 numpy.savez)

python - python字典中某个键中的任何值

python - 你能用 Python defaultdict 和 autovivification 解释这种行为吗