2012-05-13 92 views
-4

我在我的主要程序有问题:元组字典返回列表错误?

E, back = dict(), dict() 

for C in range(cols+1): 
    E[0,C], back[0,C] = m[0,C], None 

这是返回我这个错误:

TypeError: list indices must be integers, not tuple

我很困惑,因为我已经明确初始化字典不是一个列表。

这是什么错误有关,BOT E和背面都在第一行规定的字典。但是当我尝试添加元素时,它会给我一个LIST错误?

EDIT --- “m”是的像素 “COLS”的阵列是len(M [0]) 的我的代码的目的是为了执行存储在m,其中的图像的垂直接缝焊接m [x] [y]是位置x,y中像素的灰度。 我不希望/需要与seamcarving算法帮助,但此错误消息是推动我坚果现在,好好尝试一下有任何意义。

好吧,我纠正自己在编辑......我试图存取权限M用字典,它确实是一个阵列。对我感到羞耻。

+2

什么是'M'的类型? – Michael

+2

你说它没有意义,但你有一个像素列表,'m [0,C]'意在从列表中获得什么?这是告诉它从列表中获得索引“(0,C)”,这是没有意义的。你可能想'm [0] [C]'。 –

+0

我已经添加了更多信息,m是一个数组(列表的列表)。哦,我的.....我认为你是对的。 – user1031296

回答

4

您还没有表现出所有的代码,但我猜测,m是一个列表。

3

你说m是列表的列表。 Python中用于访问子列表元素的语法不是[a, b]它是[a][b]

m[0,C]表示访问由元组(0, C)索引的m的元素。

你想要的是获得元素0m,然后元素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 

你可以看到错误使得完整意义上的。