我的主程序有问题:
E, back = dict(), dict()
for C in range(cols+1):
E[0,C], back[0,C] = m[0,C], None
这回复了我这个错误:
TypeError:列表索引必须是整数,而不是元组
我很困惑,因为我已经清楚地初始化了一个不是列表的字典。
这个错误是什么,bot E和back是第一行中所述的字典。但是当我尝试添加元素时,它会给我一个LIST错误?
编辑--- “m”是像素阵列 “cols”是len(m [0]) 我的代码的目的是执行存储在m中的图像的垂直Seam雕刻,其中m [x] [y]是位置x,y中的像素的灰度。 我不希望/需要帮助使用seamcarving算法,但这个错误信息现在让我疯了,没有任何意义。
好吧,我在编辑中纠正了自己...我试图将m作为字典来访问,而且它确实是一个数组。对我感到羞耻。
答案 0 :(得分:4)
您尚未显示所有代码,但我猜测m
是一个列表。
答案 1 :(得分:3)
您已声明m
是一个列表清单。 Python中用于访问子列表元素的语法不是[a, b]
它是[a][b]
。
m[0,C]
表示访问元组m
索引的(0, C)
元素。
你想要的是获得0
的元素m
,然后获取该元素的元素C
,所以m[0][C]
。
要清楚地表明这一点:
>>> a = [list(range(5)) for _ in range(5)]
>>> a
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> a[0, 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple
>>> a[0][2]
2
您可以看到错误完全正确。