为什么列表索引必须是整数而不是元组?

4 投票
3 回答
44758 浏览
提问于 2025-04-16 10:31

我有一个简单的程序:

x = {}
x[1,2] = 3
print x
print x[1,2]

这个程序运行得很好。第一个 print 输出的是 {(1,2):3},而第二个输出的是 3

但是在我的“较大”程序中,我似乎做了相同的事情,却遇到了一个错误,提示 list indices must be integers, not tuple。这个错误信息是什么意思,我该如何解决这个问题呢?

3 个回答

2
x = {}

这段代码创建的是一个字典,而不是一个列表。

x[1,2] = 3

它把值3赋给了一个键(1, 2),这个键是一个元组。

列表只能用整数来索引。也许你在使用字典的时候搞混了[]和{}?

6

注意,x={} 这个写法是把 x 定义成一个 字典,而不是一个列表(字典的键可以是任何可哈希的值,而且有一种语法糖可以把 d[key1,key2] 转换成 d[(key1,key2)])。

不过,如果你真的需要多维数组,可以看看 numpy,它可以满足这个需求。

13

如果你遇到那个错误,说明你在尝试用不对的方法来访问一个列表,而不是字典。

在Python中,列表,比如说 [1, 2, 3],必须用整数来访问它的元素。也就是说,你只能用像0、1、2这样的数字来获取列表里的内容。而字典则不同,你可以用更多种类的值来访问,比如字符串或者其他类型的值。

撰写回答