问题是您不能在
list中将a用作键
dict,因为
dict键必须是不可变的。请改用元组。
这是一个列表:
[x, y]
这是一个元组:
(x, y)
请注意,在大多数情况下,
(and
)是可选的,因为
,它实际上定义了一个元组(只要它不被
[]or包围
{},或用作函数参数)。您可能会发现Python教程中有关元组的部分非常有用:
尽管元组看起来类似于列表,但是它们通常用于不同的情况和不同的目的。元组是 不可变的
,并且通常包含异类元素序列,这些元素可以通过拆包(请参阅本节后面的内容)或索引(甚至在namedtuple的情况下通过属性)进行访问。列表是可变的,并且它们的元素通常是同类的,并且可以通过遍历列表来访问。
在字典部分中:
与用数字范围索引的序列不同,字典是用键索引的,键可以是任何不可变的类型。字符串和数字始终可以是键。
如果元组仅包含字符串,数字或元组,则它们可用作键。
如果元组直接或间接包含任何可变对象,则不能将其用作键。您不能将列表用作键,因为可以使用索引分配,切片分配或诸如append()和extend()之类的方法在适当位置修改列表。
如果您想知道错误消息的含义,那是在抱怨,因为列表没有内置的哈希函数(通过设计),并且字典实现为哈希表。



