如何在Python中将列表作为dict的键?

时间:2013-07-21 05:20:30

标签: c++ python hash

在C ++中,我将会map<vector<int>,int> mv; 但在Python中,我收到“TypeError:unhashable type:'list'”的错误 我想也许在C ++中,map是一个红黑树,但在Python中,dict是一个哈希表。 但是我怎么能在Python中做同样的事情呢?

2 个答案:

答案 0 :(得分:3)

您不能将列表用作字典键,因为它不可清除。

>>> mv = {}
>>> mv[[1,2,3]] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

改为使用元组。

>>> mv[(1,2,3)] = 2
>>> mv
{(1, 2, 3): 2}

答案 1 :(得分:1)

只要您不需要调整密钥的大小,tuple可能是最有效的方法:

mv = {}
mv[(1, 2, 3)] = 456