得到 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,然后尝试在下一步中删除它。这会引发错误,因为找不到该元素
我写了一个简单的函数来练习集合方法。有人可以告诉我为什么会出现此错误以及如何解决吗?非常感谢
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,然后尝试在下一步中删除它。这会引发错误,因为找不到该元素