TypeError:不可用类型:在两个字典之间查找公共键值对时发生'list'

时间:2014-02-11 08:05:44

标签: python

我编写了一个代码,在这里我找到了两个字典之间的公共键值对,如下所示:

d_inter = dict(set(message.iteritems()).intersection(v.iteritems()))

这种方法很好但当message字典的key值为list时,我收到的错误为TypeError: unhashable type: 'list'

我阅读了几个与此相关的答案,发现当我们尝试在任何字典中使用list作为key时会发生此错误,但在这里我没有做任何类似的事情。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

问题是list()项目不可清除。 hash()方法用于生成dict()个密钥。

解决方案可以是将列表转换为元组,但不能在这样的字典中使用列表。

列表示例:

{[1]: 1, [2]: 2}

结果:

TypeError: unhashable type: 'list'

将列表转换为元组的示例:

{tuple([1]): 1, tuple([2]): 2}

结果:

{(1,): 1, (2,): 2}

答案 1 :(得分:1)

由于list不能成为dict中的关键字的完全相同的原因,它不能是set的元素。它们在内部以相同的方式工作;唯一真正的区别是,集合不会将其“键”映射到任何相应的值。