1

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

4

2 回答 2

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}
于 2013-07-21T05:22:15.537 回答
1

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

mv = {}
mv[(1, 2, 3)] = 456
于 2013-07-21T05:22:19.280 回答