keyError использует итерацию словаря while l oop - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь выполнить итерацию нескольких входов, а затем заполнить словарь, но постоянно получаю этот keyError каждый раз, когда последний ключ вводит последний ключ, он выдает мне эту ошибку.

 # Get user input and define our roster
roaster = {}
while True:
    position = input('position: ')
    player = input('player: ')
    roaster[position] = [player]
    roaster.update()
    if len(roaster) == 1:
        break
print(f'Your starting {len(roaster)} for the upcoming basketball season')

print(f'\t\t{roaster[player]}:\t\t{roaster[position]}')

Ошибка:

Traceback (most recent call last):
File "/home/Basketball_Roaster_App/basketball_ball_roaster.py", line 16, in <module>
print(f'\t\t{roaster[player]}:\t\t{roaster[position]}')
KeyError: 'mike'

Ответы [ 3 ]

1 голос
/ 05 марта 2020

Ваша проблема roaster[player]

Ваш вход las в качестве игрока - майк, поэтому dict - roaster = {position: 'mike'}

Вы можете получить доступ к диктовке только с помощью клавиш, поэтому вам нужно использовать положение для доступа. Python пытается найти «майк» в ключах и не может его найти.

Что вы должны сделать:

for key in roaster:
    print(roaster[key]: key)
1 голос
/ 10 марта 2020

Вы можете попробовать это

roaster = {position: player}

print roaster.items ()

0 голосов
/ 05 марта 2020

Ваш roaster использует позиции в качестве ключей, а не игроков .

...