如果用户试图在Python中的集合中输入重复条目,如何引发错误?

时间:2016-12-22 10:47:14

标签: python

我试图在一组中输入5个相似的元素并最后打印出来。所有元素都没有引发任何错误,但只存储了一个,因为它们都是相同的。我想知道是否有可能在我输入已经存在于集合中的值的那一刻,用户会被提示错误,该值已经存在于集合中。我想用set设置,而不是用list或dict做其他任何事情。

2 个答案:

答案 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)