KeyError со словарями
Я пытался заставить пользователя ввести город и температуру, которая будет сохранена в словаре. Тем не менее, Python постоянно говорит мне, что я получаю KeyError. Почему это происходит и как мне это исправить? Спасибо.
def main():
city = {}
keepgoing = True
while keepgoing:
user = input("Enter city followed by temperature: ")
for valu in user.split():
city[valu] = city[valu]+1
if user == "stop":
keepgoing = False
print(city)
main()
2 ответа
Чтобы решить ближайшую проблему, замените:
city[valu] = city[valu]+1
С:
city[valu] = city.get(valu, 0) + 1
объяснение
city.get(valu)
так же, как city[valu]
за исключением того, что он обеспечивает значение по умолчанию None
если ключ не существует city.get(valu, 0)
аналогично, но устанавливает значение по умолчанию 0
,
Полная программа
Гадание на то, что вы хотели, вот переписать код:
def main():
city = {}
while True:
user = input("Enter city followed by temperature: ")
if user == "stop":
print(city)
break
name, temperature = user.split()
city[name] = temperature
main()
В операции:
Enter city followed by temperature: NYC 101
Enter city followed by temperature: HK 115
Enter city followed by temperature: stop
{'NYC': '101', 'HK': '115'}
Измените цикл for, чтобы он выглядел так:
city = {}
while keepgoing:
user = input("Enter city followed by temperature: ")
for valu in user.split():
if valu not in city:
city[value] = 0
city[value] = city[value]+1
Вы получаете ошибку, потому что в первый раз, valu
не ключ в city
, В следствии, city[valu]
выходит из строя. Установка его в 0
(или другое значение по умолчанию), когда ключ не существует, решит вашу проблему