得到 KeyError 1,不知道出了什么问题

got KeyError 1, have no idea what is wrong

我写了一个简单的函数来练习集合方法。有人可以告诉我为什么会出现此错误以及如何解决吗?非常感谢

n = int(input())
s = set(map(int, input().split()))
N=int(input())
for i in range(N):
    inputlist=input()
    if len(inputlist)==3:
        s.pop()
    else: 
        newl=inputlist.split()
        comand=newl[0]
        val=int(newl[1])
        
        if comand=='remove':
            s.remove(val)
        else:
            s.discard(val)
 --------------------------------------------------------------------------------------      
    "my input:"
    3
    1 2 3
    2
    pop
    remove 1

KeyError                                  Traceback (most recent call last)
<ipython-input-25-6ab5ebb8e508> in <module>
     11         val=int(newl[1])
     12         if comand=='remove':
---> 13             s.remove(val)
     14         else:
     15             s.discard(val)

KeyError: 1

你得到一个错误,因为 element{1} pop 之前,如果 element don't exist.

你可以使用 try...except 来避免错误

试试这个:

n = int(input())
s = set(map(int, input().split()))
N=int(input())
for i in range(N):
    inputlist=input()
    if len(inputlist)==3:
        s.pop()
    else: 
        newl=inputlist.split()
        comand=newl[0]
        val=int(newl[1])        
        if comand=='remove':
            try:
                s.remove(val)
            except:
                print('val not exist')
        else:
            s.discard(val)

当您在集合中使用 pop 时,它会弹出该集合的第一个元素

在您的例子中,您首先弹出第一个元素,即 1,然后尝试在下一步中删除它。这会引发错误,因为找不到该元素