为什么列表索引必须是整数而不是元组?
我有一个简单的程序:
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这样的数字来获取列表里的内容。而字典则不同,你可以用更多种类的值来访问,比如字符串或者其他类型的值。