Python – Use 'set' to find the different items in list

Question:

I need to compare two lists in Python, and I know about using the set command to find similar items, but is there a another command I could use that would automatically compare them, instead of having to code for it?

I would like to find the items that aren’t in each one. Say list one is as follows:

[1, 2, 3, 4, 5, 6] 

and list two is:

[1, 2, 3, 4, 6]

I want to find that 5 is missing from the list, hopefully by a command, but I do know how to loop through comparing.

Asked By: RPiAwesomeness

||

Answers:

Looks like you need symmetric difference:

a = [1,2,3]
b = [3,4,5]

print(set(a)^set(b))


>>> [1,2,4,5]
Answered By: tifon

The docs are a good place to start. Here are a couple examples that might help you determine how you want to compare your sets.

To find the intersection (items that are in both sets):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])

To find the difference (items that only in one set):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a - b
set([1, 2, 3])
>>> b - a
set([7, 8, 9])

To find the symmetric difference (items that are in one or the other, but not both):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a ^ b
set([1, 2, 3, 7, 8, 9])
Answered By: Seth

A simple list comprehension

In [1]: a=[1, 2, 3, 4, 5, 6] 

In [2]: b=[1, 2, 3, 4, 6]

In [3]: [i for i in a if i not in b]
Out[3]: [5]
Answered By: Fredrik Pihl
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.