Skip to content
Related Articles

Related Articles

Improve Article

Python – Symmetric Difference of Multiple sets

  • Last Updated : 21 Jul, 2021

Symmetric Differences among groups of sets are elements that belong to any one of the sets but are not present in any other set. Given a list of sets and the task is to write a Python program to get the symmetric difference of the same. 

Input : test_list = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}, {0, 3, 6, 7}]

Output : {8, 1, 9, 0}

Explanation : 8, 1, 9, 0 occur just 1 time over whole container. 

Input : test_list = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}]



Output : {8, 1, 9}

Explanation : 8, 1, 9 occur just 1 time over whole container. 

Method #1: Using Counter() + chain.from_iterable() 

This method is used to check for all elements that have 1 as frequency overall sets by flattening. Counter() extracts frequencies and then all elements with count 1 can be extracted. 

Python3




# Python3 code to demonstrate working of
# Symmetric Difference of Multiple sets
# Using Counter() + chain.from_iterable() 
from collections import Counter
from itertools import chain
  
# initializing list
test_list = [{5, 3, 2, 6, 1},
             {7, 5, 3, 8, 2}, 
             {9, 3},
             {0, 3, 6, 7}]
               
# printing original list
print("The original list is : " + str(test_list))
  
# getting frequencies using Counter()
# from_iterable() flattens the list 
freq = Counter(chain.from_iterable(test_list))
  
# getting frequency count 1 
res = {idx for idx in freq if freq[idx] == 1}
  
# printing result
print("Symmetric difference of multiple list : " + str(res))

Output:

The original list is : [{1, 2, 3, 5, 6}, {2, 3, 5, 7, 8}, {9, 3}, {0, 3, 6, 7}]

Symmetric difference of multiple list : {8, 1, 9, 0}

Method #2 : Using Counter() + chain.from_iterable() + items()

Similar to above method, only difference being its performed in single step by extracting keys and values using items().

Python3




# Python3 code to demonstrate working of
# Symmetric Difference of Multiple sets
# Using Counter() + chain.from_iterable() + items()
from collections import Counter
from itertools import chain
  
# initializing list
test_list = [{5, 3, 2, 6, 1},
             {7, 5, 3, 8, 2}, 
             {9, 3}, {0, 3, 6, 7}]
               
# printing original list
print("The original list is : " + str(test_list))
  
# clubbing operations using items() to get items 
res = {key for key, val in Counter(chain.
                                   from_iterable(test_list)).
       items() if val == 1}
  
# printing result
print("Symmetric difference of multiple list : " + str(res))

Output:

The original list is : [{1, 2, 3, 5, 6}, {2, 3, 5, 7, 8}, {9, 3}, {0, 3, 6, 7}]

Symmetric difference of multiple list : {8, 1, 9, 0}

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :