Python Symmetric Difference
Summary: in this tutorial, you’ll learn how to find the symmetric difference of two or more sets in Python.
Introduction to the symmetric difference of sets
The symmetric difference of two sets is a set of elements that are in either set, but not in their intersection.
Suppose that you have the following s1
and s2
sets:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}
Code language: JavaScript (javascript)
The symmetric difference of the s1
and s2
sets returns in the following set:
{'C#', 'Python'}
Code language: JavaScript (javascript)
As you can see clearly from the output, the elements in the return set are either in s1
or s2
set, but not in their intersection.
The following Venn diagram illustrates the symmetric difference of the s1
and s2
sets:
In Python, you can find the symmetric difference of two or more sets by using the set symmetric_difference()
method or the symmetric difference operator (^
).
1) Using the symmetric_difference() method to find the symmetric difference of sets
The Set
type has the symmetric_difference()
method that returns the symmetric difference of two or more sets:
new_set = set1.symmetric_difference(set2, set3,...)
For example, the following finds the symmetric difference of the s1
and s2
sets:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}s = s1.symmetric_difference(s2)
print(s)
Code language: PHP (php)
Output:
{'C#', 'Python'}
Code language: JavaScript (javascript)
Note that the symmetric_difference()
method returns a new set and doesn’t modify the original sets.
2) Using the symmetric difference operator(^) to find the symmetric difference of sets
Besides using the set symmetric_difference()
method, you can use the symmetric difference operator (^
) to find the symmetric difference between two or more sets:
new_set = set1 ^ set2 ^...
The following example shows how to apply the symmetric difference operator (^
) to the s1
and s2
sets:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}s = s1 ^ s2
print(s)
Code language: PHP (php)
Output:
{'Python', 'C#'}
Code language: JavaScript (javascript)
The symmetric_difference()
method vs symmetric difference operator (^)
The symmetric_difference()
method accepts one or more iterables that can be strings, lists, or dictionaries.
If the iterables aren’t sets, the method will convert them to sets before returning the symmetric difference of them.
The following example shows how to use the symmetric_difference()
method to find the symmetric difference between a set and a list:
scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores.symmetric_difference(ratings)print(new_set)
Code language: PHP (php)
Output:
{10, 7}
However, the symmetric difference operator (^
) only applies to sets. If you use it with the iterables which aren’t sets, you’ll get an error. For example:
scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores ^ ratingsprint(new_set)
Code language: PHP (php)
Error:
TypeError: unsupported operand type(s) for ^: 'set' and 'list'
Code language: JavaScript (javascript)
Summary
- The symmetric difference of two or more sets is a set of elements that are in all sets, but not in their intersections.
- Use the set
symmetric_difference()
method or the symmetric difference operator (^
) to find the symmetric difference of two or more sets.