Van*_*ano 2 python data-structures
我正在寻找一种在添加重复元素时会引发异常的数据结构。
我发现的最接近的是collections.Counter
>>> from collections import Counter as counter
>>> c = counter()
>>> c.update("A")
>>> c.update("A")
>>> c
Counter({'A': 2})
Run Code Online (Sandbox Code Playgroud)
我稍后可以查询。
有没有办法直接实现我正在寻找的东西?
您想要一个计数器还是只是像 一样工作set但会引发错误的东西?如果是后者,您可以子类化set并重写该add方法。
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'
Run Code Online (Sandbox Code Playgroud)
编辑:添加了额外的方法
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |