gpt4 book ai didi

不插入缺失值的Python defaultdict

转载 作者:太空狗 更新时间:2023-10-29 17:06:40 28 4
gpt4 key购买 nike

所以 defaultdict documentation提到,如果缺少某个项目,则 default_factory 返回的值“将插入字典中作为键,然后返回。”这在大多数情况下都很棒,但在这种情况下我真正想要的是返回值但插入到 defaultdict 中。

我想我可能可以子类化 defaultdict 并覆盖...我想 __missing__?没有把握。解决此问题的最佳方法是什么?

提前致谢。

最佳答案

你可以继承 dict 并实现 __missing__:

class missingdict(dict):
def __missing__(self, key):
return 'default' # note, does *not* set self[key]

演示:

>>> d = missingdict()
>>> d['foo']
'default'
>>> d
{}

也可以子类defaultdict,您将获得工厂处理以及复制和泡菜支持:

from collections import defaultdict

class missingdict(defaultdict):
def __missing__(self, key):
return self.default_factory()

演示:

>>> from collections import defaultdict
>>> class missingdict(defaultdict):
... def __missing__(self, key):
... return self.default_factory()
...
>>> d = missingdict(list)
>>> d['foo']
[]
>>> d
defaultdict(<type 'list'>, {})

但是,如您所见,__repr__ 确实在其名称上撒了谎。

关于不插入缺失值的Python defaultdict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956927/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com