Python 访问运算符中的默认dict更改

Python 访问运算符中的默认dict更改,python,Python,是否可以在不更改in operator函数方式的情况下访问默认dict?使用get函数 >>> from collections import defaultdict >>> x = defaultdict(int) >>> x[1] =99 >>> 1 in x True >>> 2 in x False >>> x[2] 0 >>> 2 in x True 使

是否可以在不更改in operator函数方式的情况下访问默认dict?

使用get函数

>>> from collections import defaultdict
>>> x = defaultdict(int) 
>>> x[1] =99
>>> 1 in x  
True
>>> 2 in x
False
>>> x[2]
0
>>> 2 in x
True
使用get函数

>>> from collections import defaultdict
>>> x = defaultdict(int) 
>>> x[1] =99
>>> 1 in x  
True
>>> 2 in x
False
>>> x[2]
0
>>> 2 in x
True

您可以创建自己的类并修改
\uuu missing\uu
方法。 在这里,您希望保留defaultdict的所有功能,但不希望保留丢失的密钥,以便在返回结果后删除它

>>> from collections import defaultdict
>>> x = defaultdict(int)
>>> x[1]=99
>>> 2 in x
False
>>> x.get(2)
>>> x.get(2,False)
False
>>> 2 in x
False
>>> 
然后要测试它:

from collections import defaultdict
class myDefDict(defaultdict):
    def __missing__(self, key):
        result = super().__missing__(key)
        del self[key]
        return result

您可以创建自己的类并修改
\uuu missing\uu
方法。 在这里,您希望保留defaultdict的所有功能,但不希望保留丢失的密钥,以便在返回结果后删除它

>>> from collections import defaultdict
>>> x = defaultdict(int)
>>> x[1]=99
>>> 2 in x
False
>>> x.get(2)
>>> x.get(2,False)
False
>>> 2 in x
False
>>> 
然后要测试它:

from collections import defaultdict
class myDefDict(defaultdict):
    def __missing__(self, key):
        result = super().__missing__(key)
        del self[key]
        return result

你能提供你想要什么,或者你期望的输出是什么样子的吗?我希望最后一行的
2 in x
是错误的。如果你不想要这种行为,为什么要使用
defaultdict
?这基本上是
defaultdict
和常规
dict
之间的唯一区别。代码的两个不同部分使用此默认dict。一个用于添加值,另一个用于访问。您能提供您想要的内容吗,或者您的预期输出是什么样子的?我希望最后一行的x中的
2
为假如果您不希望出现这种行为,为什么要使用
defaultdict
?这基本上是
defaultdict
和常规
dict
之间的唯一区别。代码的两个不同部分使用此默认dict。一个用于添加值,另一个用于访问它。