我试图在一组中输入5个相似的元素并最后打印出来。所有元素都没有引发任何错误,但只存储了一个,因为它们都是相同的。我想知道是否有可能在我输入已经存在于集合中的值的那一刻,用户会被提示错误,该值已经存在于集合中。我想用set设置,而不是用list或dict做其他任何事情。
答案 0 :(得分:2)
您可以检查它是否存在,然后引发错误:
my_set = set()
for i in some_list_of_user_input:
if i in my_set:
print('{} is already present in the set'.format(i))
my_set.add(i)
答案 1 :(得分:1)
如果要在重复插入时引发异常,可以执行以下操作:
class DuplicateKeyError(Exception): pass
class SingleSet(set):
def add(self, value):
if value in self:
raise DuplicateKeyError('Value {!r} already present'.format(value))
super().add(value)
def update(self, values):
error_values = []
for value in values:
if value in self:
error_values.append(value)
if error_values:
raise DuplicateKeyError('Value(s) {!r} already present'.format(
error_values))
super().update(values)
my_set = SingleSet()
value = 'something'
while value:
value = input('Enter a value: ')
try:
my_set.add(value)
except DuplicateKeyError as e:
print(e)