Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python Program to Find Duplicate sets in list of sets

  • Last Updated : 05 Apr, 2021

Given a list of sets, the task is to write a Python program to find duplicate sets.

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

Output : [frozenset({1, 4, 5, 6}), frozenset({1, 3, 4})]

Explanation : {1, 4, 5, 6} is similar to {6, 4, 1, 5} hence part of result.

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



Output : [frozenset({1, 3, 4})]

Explanation : {1, 3, 4} ({1, 3, 4, 3}) is similar to {1, 4, 3} hence part of result.

Method #1 : Using Counter() + count() + frozenset() + loop

In this, all the sets are hashed by converting them into frozenset() [ to get hashable type ] into frequency using Counter(). Then count() is used to get count of all the present sets from frequency counter created. 

Python3




# Python3 code to demonstrate working of
# Duplicate sets in list of sets
# Using Counter() + count() + frozenset() + loop
from collections import Counter
  
# initializing list
test_list = [{4, 5, 6, 1}, {6, 4, 1, 5}, {1, 3, 4, 3}, 
             {1, 4, 3}, {7, 8, 9}]
               
# printing original list
print("The original list is : " + str(test_list))
  
# getting frequency using Counter()
freqs = Counter(frozenset(sub) for sub in test_list)
  
res = []
for key, val in freqs.items():
      
    # if frequency greater than 1, set is appended 
    # [duplicate]
    if val > 1 :
        res.append(key)
  
# printing result
print("Duplicate sets list : " + str(res))


Output:

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

Duplicate sets list : [frozenset({1, 4, 5, 6}), frozenset({1, 3, 4})]

Method #2 : Using list comprehension + Counter()

In this, we perform similar task, only difference being list comprehension is used as one liner to extract duplicates based on frequency dictionary.

Python3




# Python3 code to demonstrate working of
# Duplicate sets in list of sets
# Using list comprehension + Counter()
from collections import Counter
  
# initializing list
test_list = [{4, 5, 6, 1}, {6, 4, 1, 5}, {1, 3, 4, 3}, {1, 4, 3}, {7, 8, 9}]
               
# printing original list
print("The original list is : " + str(test_list))
  
# getting frequency using Counter()
freqs = Counter(frozenset(sub) for sub in test_list)
  
# list comprehension provides shorthand solution
res = [key for key, val in freqs.items() if val > 1]
  
# printing result
print("Duplicate sets list : " + str(res))


Output:

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

Duplicate sets list : [frozenset({1, 4, 5, 6}), frozenset({1, 3, 4})]




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!