Cha*_*nヨネ 14 python dictionary python-3.x
我有多个文件需要加载,所以我用a dict
来缩短内容.当我运行时,我得到一个"TypeError:'type'对象不可订阅"错误.我怎样才能让它发挥作用?
TypeError: 'type' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
Ela*_*ubi 52
你应该更新到python >= 3.9
,一切都会正常进行
b4h*_*and 24
通常,NameError
如果未定义变量,则抛出Python :
>>> d[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
Run Code Online (Sandbox Code Playgroud)
但是,您已经设法偶然发现Python中已存在的名称.
因为dict
是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
Run Code Online (Sandbox Code Playgroud)
请注意,您可以盲目地分配dict
名称,但实际上您并不想这样做.它会在以后引起你的问题.
>>> dict = {1:'a'}
>>> type(dict)
<class 'dict'>
>>> dict[1]
'a'
Run Code Online (Sandbox Code Playgroud)
问题的真正根源是您必须在尝试使用变量之前分配变量.如果你只是重新排序你的问题的陈述,它几乎肯定会起作用:
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))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127982 次 |
最近记录: |