dict键必须是可哈希的,列表不能可变。您可以在创建列表后对其进行更改。想一想,当用作键的数据发生更改时,尝试保持命令是多么棘手;这没有任何意义。想象一下这种情况
>>> foo = [1, 2]
>>> bar = {foo: 3}
>>> foo.append(4)
并且您将了解为什么Python不尝试将列表支持为键。
>>> d = {[1, 2, 3]: 1, [2, 3]: 3}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d = {(1, 2, 3): 1, (2, 3): 3}
>>> d
{(2, 3): 3, (1, 2, 3): 1}
>>> d[2, 3]
3