我在Python中有两个列表;
listA = [{'b': '3'}, {'b': '4'}]
listB = [{'a': '3'}, {'b': '3'}]
我试图将其转换为集合,但是显示了不可哈希类型:'dict'
我尝试进行的操作是
list[(set(listA)).difference(set(listB))]
那么,为了实现同样的功能,我可以对我的列表做些什么呢?谢谢。
我在Python中有两个列表;
listA = [{'b': '3'}, {'b': '4'}]
listB = [{'a': '3'}, {'b': '3'}]
我试图将其转换为集合,但是显示了不可哈希类型:'dict'
我尝试进行的操作是
list[(set(listA)).difference(set(listB))]
使用简单的列表推导式来完成。
>>> [i for i in listA if i not in listB]
[{'b': '4'}]
dict.items()
来获取元组,这些元组可以转换为 set
类型。setA = set(chain(*[e.items() for e in listA]))
setB = set(chain(*[e.items() for e in listB]))
print setA.symmetric_difference(setB)
set([('a', '3'), ('b', '4')])
list(itertools.ifilterfalse(lambda x: x in listA, listB)) + list(itertools.ifilterfalse(lambda x: x in listB, listA))
输出将会是:
[{'b': '4'}, {'a': '3'}]