我需要加载多个文件,所以我用dict来缩短时间.当我 run 时,我会得到一个

TypeError: 'type' object is not subscriptable 

错误我怎样才能让它工作?

m1 = pygame.image.load(dict[1])
m2 = pygame.image.load(dict[2])
m3 = pygame.image.load(dict[3])
dict = {1: "walk1.png", 2: "walk2.png", 3: "walk3.png"}
playerxy = (375,130)
window.blit(m1, (playerxy))

推荐答案

如果未定义变量,Python通常会抛出NameError:

>>> d[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined

然而,您已经设法找到了Python中已经存在的名称.

因为你看到的似乎是一条奇怪的错误信息,但实际上并非如此.

dict型是type型.所有类型都是Python中的对象.因此,你实际上是在try 索引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个名称,但如果您 Select really don't want to do that.,它只会在以后给您带来问题.

>>> dict = {1:'a'}
>>> type(dict)
<class 'dict'>
>>> dict[1]
'a'

问题的真正根源在于,在try 使用变量之前,必须先分配变量.如果你只是简单地重新排列你的问题的陈述,它几乎肯定会起作用:

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))

Python-3.x相关问答推荐

海象表达可以放在方括号中而不是括号中吗?

如何在Django中创建两个不同权限的用户?

如何通过Pandas为不同的列集垂直设置列数据?

将strid()映射到Pandas DataFrame中的字符串不会更改NaN条目,但仍然声称它们不同?

我们可以在每个可以使用 Pandas Join 的用例中使用 Pandas merge 吗?

如何将从维基百科表中抓取的数据转换为字典列表?

在python内的powershell中转义$_

重复数组直到一定长度 groupby pandas

如何将日期时间索引写入日期类型的表?

使用 Python 在特定组的列中设置上限

提高时间复杂度的一些建议

过滤并获取数据框中条件之间的行

过滤阈值大小数据以使用 Pyspark 或 Python 读取

将元组列表转换为以整个元组为键的字典列表

在python中循环处理时并行写入文件

多个返回函数的列表理解?

如何禁用 pylint 禁止自用警告?

使用 pytest.fixture 返回模拟对象的正确方法

Linux Mint 上的 Python3 错误没有名为蓝牙的模块

在 PostgreSQL 上使用 SQLAlchemy 创建全文搜索索引