Почему возникает ошибка KeyError: 0
n = int(input())
x=[]
a={}
def f(x):
return x+1
for i in range(n):
x.append(int(input()))
if x[i] not in a.keys():
a.update({x[i]:f(x[i])})
print(a[i])
else:
print(a[i])
Ответы (3 шт):
Автор решения: вася
→ Ссылка
У словаря a нет ключа i, поэтому и возникает эта ошибка.
Если вводить последовательно 0, 1, 2, ...,n-1, то ошибок не будет.
Автор решения: kepich
→ Ссылка
Перемудрил сильно в for: Можно сделать так:
for i in range(n):
x.append(int(input()))
if x[i] not in a.keys():
a[i] = f(x[i])
print(a[i])
Автор решения: Pavel Durmanov
→ Ссылка
Проблема в том, что у вас в a[i] i - это не значение введенное юзером, а его индекс в списке x.
Например на первой итерации я введу число 10, оно попадет на 0 индекс в списке x.
Потом вы кладете число на индексе 0 в ваш словарь, тем самым имеем {10: ...}.
Как видите ключ у нас 10 а не 0, а вы пытаетесь вытащить 0.
Решение: замените a[i] на a[x[i]].