Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like 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}




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!