【问题标题】:tuple dict returning a list error?元组字典返回列表错误?
【发布时间】:2012-05-21 07:43:23
【问题描述】:

我的主程序有问题:

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 Carving,其中 m[x][y] 是 x,y 位置像素的灰度。 我不想/需要关于缝雕刻算法的帮助,但是这个错误消息现在让我发疯了,没有任何意义。

好的,我在编辑中更正了自己...我试图将 m 作为字典访问,它确实是一个数组。真丢人。

【问题讨论】:

  • m的类型是什么?
  • 你说它没有意义,但是你有一个像素列表,m[0,C] 意味着从列表中得到什么?那就是告诉它从列表中获取索引(0, C),这是没有意义的。你可能想要m[0][C]
  • 我添加了更多信息,m 是一个数组(列表列表)。哦,我的 g..... 我认为你是对的。

标签: python dictionary tuples


【解决方案1】:

您还没有显示所有代码,但我猜m 是一个列表。

【讨论】:

    【解决方案2】:

    您已经说过m 是一个列表列表。 Python 中访问子列表元素的语法不是[a, b],而是[a][b]

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

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

    您可以看到错误完全合理。

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 2021-06-17
      相关资源
      最近更新 更多