如何比较两个列表并返回差异?(python中的difference函数不会返回我需要的内容)



我正试图找出两个列表之间的区别。基本上,我想知道列表1中所有不在列表2中的内容。最好的解释方法是举一个例子:

List1 = [a, a, b, c, d, e]
List2 = [a, b, c, d]
In this example, I would like a function that would return [a, e]

当我在python中使用difference函数时,它只会返回"e",而不会返回列表1中额外的"a"。当我简单地在两个列表之间使用XOR时,它也只返回"e"

您真正想要的不是设置减法。您可以使用计数器:

>>> List1 = ['a', 'a', 'b', 'c', 'd', 'e']
>>> List2 = ['a', 'b', 'c', 'd']
>>> import collections
>>> counter = collections.Counter(List1)
>>> counter.subtract(List2)
>>> list(counter.elements())
['a', 'e']

假设List1List2:的严格超集

for i in List2:
    if i in List1:
        List1.remove(i)
# List1 is now ["a", "e"]

(如果不想就地克隆List1,则可以克隆。)

相关内容

  • 没有找到相关文章

最新更新