Обычно Python бросает NameError
, если переменная не определена:
>>> d[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
Тем не менее, удалось наткнуться на имя, которое уже существует в Python.
Потому что dict
is the name of a built-in type in Python вы видите, что кажется странным сообщением об ошибке, но на самом деле это не так.
Тип dict
- type
. Все типы - объекты в Python. Таким образом, вы на самом деле пытаетесь проиндексировать объект type
. Вот почему в сообщении об ошибке говорится, что объект типа «type» не является индексируемым ».
>>> type(dict)
<type 'type'>
>>> dict[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'type' object is not subscriptable
Обратите внимание, что вы можете слепо присвоить имя dict
, но вы действительно не хотите, чтобы сделать это. Это просто вызовет проблемы позже.
>>> dict = {1:'a'}
>>> type(dict)
<class 'dict'>
>>> dict[1]
'a'
Настоящий источник проблемы заключается в том, что перед попыткой их использования вы должны назначить переменные. Если вы просто переупорядочиваете заявления по вашему вопросу, это почти наверняка будет работать:
d = {1: "walk1.png", 2: "walk2.png", 3: "walk3.png"}
m1 = pygame.image.load(d[1])
m2 = pygame.image.load(d[2])
m3 = pygame.image.load(d[3])
playerxy = (375,130)
window.blit(m1, (playerxy))
Вы хотите назначить 'dict' перед ссылками в предыдущих строках? Попробуйте переместить 4-ю строку до первой строки. – b4hand