The symmetric difference between the two sets is the set of elements that are in either of the sets but not in both of them.
Symmetric Difference is marked in Green
symmetric_difference() method returns a new set that contains a symmetric difference of two sets. The symmetric_difference_update() method updates the set by calling symmetric_difference_update() with the symmetric difference of sets.
Python set symmetric_difference_update() Syntax
Syntax: A.symmetric_difference_update(B)
Parameters:
The symmetric_difference takes a single “iterable” as an argument. Iterable should contain hashable object.
Returns:
This method returns None (which indicates absence of a return value). It only updates the set calling symmetric_difference_update() with the symmetric difference of sets.
Python set symmetric_difference_update() Examples
Modifying Sets With Non-Duplicated Elements with Set symmetric_difference_update()
Here A.symmetric_difference_update(B), the elements that are common between set A and set B are removed from A, and only the elements that are unique to each set are kept in A.
Python3
# Python code to demonstrate working of # symmetric_difference_update() A = { 'p' , 'a' , 'w' , 'a' , 'n' } B = { 'r' , 'a' , 'o' , 'n' , 'e' } # result is always none. result = A.symmetric_difference_update(B) print ( 'A = ' , A) print ( 'B = ' , B) print ( 'result = ' , result) |
Output
('A = ', set(['e', 'o', 'p', 'r', 'w']))
('B = ', set(['a', 'r', 'e', 'o', 'n']))
('result = ', None)
Handling Duplicated Elements with Set symmetric_difference_update()
A.symmetric_difference_update(B), the elements that are present in either set A or set B but not in both will be kept in set A. In this case, the resulting set A will contain elements ‘s’ and ‘b’, which are the elements present in either A or B but not in both. Set B remains unchanged.
Python3
# Python code to demonstrate working of # symmetric_difference_update() A = { 's' , 'u' , 'n' , 'n' , 'y' } B = { 'b' , 'u' , 'n' , 'n' , 'y' } # result is always none. result = A.symmetric_difference_update(B) print ( 'A = ' , A) print ( 'B = ' , B) print ( 'result = ' , result) |
Output :
('A = ', set(['s', 'b']))
('B = ', set(['y', 'b', 'u', 'n']))
('result = ', None)
Updating Sets with Symmetric Differences in Python
The symmetric_difference_update() method updates the set A by keeping only the elements that are in either A or B, but not in both. In the first example, the list B contains the elements 4, 5, 7, and 8. These elements are not in A, so they are added to A. Elements 1, 2, and 3 are in both A and B, so they are removed from A.
In the second example, the generator object B generates the numbers from 2 to 5. These numbers are not in A, so they are added to A. Elements 4 and 6 are in both A and B, so they are removed from A.
Python3
# Python code to demonstrate working of # symmetric_difference_update() A = { 1 , 2 , 3 , 4 , 5 , 6 } B = [ 4 , 5 , 7 , 8 ] # passing argument as list A.symmetric_difference_update(B) print ( "A =" , A) A = { 2 , 4 , 6 , 8 } B = (i for i in range ( 2 , 6 )) # passing argument as generator object A.symmetric_difference_update(B) print ( "A=" , A) |
Output
('A =', set([1, 2, 3, 6, 7, 8]))
('A=', set([3, 5, 6, 8]))
Set Symmetric_difference_update() with Handling Unhashable Objects
The Code will raise an error because the symmetric_difference_update() method cannot take a list that contains unhashable objects as an argument. List B contains the element [1, 2, 3], which is a list, and lists are not hashable objects.
Python3
# Python code to demonstrate working of # symmetric_difference_update() A = { 1 , 2 , 3 , 4 , 5 } B = [[ 1 , 2 , 3 ], 4 , 5 ] # error as b contain one element as list(unhashable object) A.symmetric_difference_update(B) print ( "A =" , A) |
Output
Traceback (most recent call last):
File "/home/1b4e24cadc3fabcd5f90141964a60e9b.py", line 9, in <module>
A.symmetric_difference_update(B)
TypeError: unhashable type: 'list'