【问题标题】:got KeyError 1, have no idea what is wrong得到 KeyError 1,不知道出了什么问题
【发布时间】:2023-04-02 16:05:02
【问题描述】:

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

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

【问题讨论】:

    标签: python if-statement input types 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)
    

    【讨论】:

    • @ZhengxiJiang,你搜索是只解决这个问题还是解决问题总是:)另一个答案只解决这个小问题:)))
    【解决方案2】:

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

    在您的情况下,您首先弹出第一个元素,即 1,并尝试在下一步中将其删除。这会引发错误,因为找不到该元素

    【讨论】:

    • 是的,这就是原因,我也发现了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-04-14
    相关资源
    最近更新 更多