元组词典返回列表错误?

时间:2012-05-13 15:23:28

标签: python dictionary tuples

我的主程序有问题:

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作为字典来访问,而且它确实是一个数组。对我感到羞耻。

2 个答案:

答案 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

您可以看到错误完全正确。