我正在寻找一种在添加重复元素时会引发异常的数据结构。
我发现的最接近的是collections.Counter
>>> from collections import Counter as counter
>>> c = counter()
>>> c.update("A")
>>> c.update("A")
>>> c
Counter({'A': 2})
我稍后可以查询。
有没有办法直接实现我正在寻找的东西?
你想要一个计数器还是只是像这样的东西set
,但会引发错误?如果是后者,你可以子类化set
并覆盖add
method.
class MySet(set):
def add(self, x):
if x in self:
raise KeyError(f'Value already exists')
super().add(x)
def update(self, x):
return self.__ior__(x)
def __ior__(self, x):
if any(xx in self for xx in x):
raise KeyError(f'Value already exists')
return super().__ior__(x)
s = MySet([1,2,3])
s
# returns:
{1, 2, 3}
s.add(4)
s
# returns:
{1, 2, 3, 4}
# trying to add an existing values raises an error.
s.add(4)
# raises
KeyError: 'Value already exists'
编辑:添加了额外的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)