我编写了一个代码,在这里我找到了两个字典之间的公共键值对,如下所示:
d_inter = dict(set(message.iteritems()).intersection(v.iteritems()))
这种方法很好但当message
字典的key
值为list
时,我收到的错误为TypeError: unhashable type: 'list'
。
我阅读了几个与此相关的答案,发现当我们尝试在任何字典中使用list
作为key
时会发生此错误,但在这里我没有做任何类似的事情。请帮我解决这个问题。
答案 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
的元素。它们在内部以相同的方式工作;唯一真正的区别是,集合不会将其“键”映射到任何相应的值。