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 (или другое значение по умолчанию), когда ключ не существует, решит вашу проблему

Другие вопросы по тегам