Python set symmetric_difference_update()
Last Updated :
30 Jun, 2023
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
A = { 'p' , 'a' , 'w' , 'a' , 'n' }
B = { 'r' , 'a' , 'o' , 'n' , 'e' }
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
A = { 's' , 'u' , 'n' , 'n' , 'y' }
B = { 'b' , 'u' , 'n' , 'n' , 'y' }
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
A = { 1 , 2 , 3 , 4 , 5 , 6 }
B = [ 4 , 5 , 7 , 8 ]
A.symmetric_difference_update(B)
print ( "A =" , A)
A = { 2 , 4 , 6 , 8 }
B = (i for i in range ( 2 , 6 ))
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
A = { 1 , 2 , 3 , 4 , 5 }
B = [[ 1 , 2 , 3 ], 4 , 5 ]
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'
Share your thoughts in the comments
Please Login to comment...