есть ошибка ключа 1, понятия не имею, что не так

#python #if-statement #input #types #keyerror

Вопрос:

Я написал простую функцию для выполнения набора методов. может кто-нибудь сказать мне, почему я получил эту ошибку и как ее решить? Большое спасибо!

 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
 

Ответ №1:

вы получили ошибку, потому element{1} pop что раньше вы могли использовать try...except , чтобы не получить ошибку, если element don't exist .

попробуйте это:

 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)
 

Комментарии:

1. @ZhengxiJiang, вы ищете только решение этой проблемы или решаете проблему всегда ::) другой ответ только решит эту маленькую проблему :)))

Ответ №2:

Когда вы используете pop в наборе, он открывает первый элемент этого набора

В вашем случае вы сначала открываете первый элемент, который равен 1, и пытаетесь удалить его на следующем шаге. Что вызывает у вас ошибку, потому что этот элемент не может быть найден

Комментарии:

1. да, да, вот в чем причина, я тоже это выяснил, спасибо, чувак!