列出不可避免的错误?

时间:2013-06-04 15:28:24

标签: python list hash dictionary

实际值和峰值都是整数列表的列表。

在我的代码中,我试图从整数列表到整数列表列表创建一个字典,如下所示:

mapping={}
for a in actuals:
    mapping[a]=[v for v in peaks if v[0]==a[0]]

然而,它返回了错误

TypeError: unhashable type: 'list'

可能出了什么问题?

3 个答案:

答案 0 :(得分:2)

看起来a属于列表类型(actuals是列表列表)。您正尝试将字典的键分配给list,这是不可能的。你必须拿出一些其他可以清洗的钥匙。

答案 1 :(得分:0)

如果每个a都是一个你不会改变的列表,你可以用它来组成一个元组:

mapping={}
for a in actuals:
    mapping[tuple(a)]=[v for v in peaks if v[0]==a[0]]

答案 2 :(得分:0)

字典的键必须实现__hash__(),并且这些函数必须返回一个值,如果对象发生更改则该值不会改变,另一方面,应该根据对象的内容计算哈希值。由于列表的内容可能会更改,因此不会实现__hash__()