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.
Answers:
Looks like you need symmetric difference:
a = [1,2,3]
b = [3,4,5]
print(set(a)^set(b))
>>> [1,2,4,5]
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])
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]
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.
Looks like you need symmetric difference:
a = [1,2,3]
b = [3,4,5]
print(set(a)^set(b))
>>> [1,2,4,5]
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])
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]