A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/python/python-symmetric-difference-of-multiple-sets/ below:

Python - Symmetric Difference of Multiple sets

Python - Symmetric Difference of Multiple sets

Last Updated : 04 Mar, 2024

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}



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4