如何获得两个列表之间的对称差异?
How can the symmetric difference between two lists be obtained?
我想知道如何得到两个列表之间的对称差异。
例如:
list1 = ['a','a','b','c','d']
list2 = ['a','b','c','f']
sym_dif = ['a', 'd', 'f']
集不起作用,因为我在每个列表中都有同一对象的多个实例。我试过浏览 Whosebug 和互联网,每个人总是建议集。也许对称差异不是我要找的?我只是在寻找仅出现在一个列表中或在一个列表中出现次数多于另一个列表的每个项目。
您可以使用 collections.Counter
代替:
from collections import Counter
c1 = Counter(list1)
c2 = Counter(list2)
print(list((c1 - c2 | c2 - c1).elements()))
这输出:
['a', 'd', 'f']
我想知道如何得到两个列表之间的对称差异。
例如:
list1 = ['a','a','b','c','d']
list2 = ['a','b','c','f']
sym_dif = ['a', 'd', 'f']
集不起作用,因为我在每个列表中都有同一对象的多个实例。我试过浏览 Whosebug 和互联网,每个人总是建议集。也许对称差异不是我要找的?我只是在寻找仅出现在一个列表中或在一个列表中出现次数多于另一个列表的每个项目。
您可以使用 collections.Counter
代替:
from collections import Counter
c1 = Counter(list1)
c2 = Counter(list2)
print(list((c1 - c2 | c2 - c1).elements()))
这输出:
['a', 'd', 'f']