Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python program to convert a list to a set based on a common element

  • Last Updated : 02 Feb, 2021

Given a list of lists, the task is to write a python program that can convert each sublist to a set and combine to sublists into one set if they have a common element. The output printed will be a list of sets.

Input : test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]

Output : [{11, 12, 13, 14, 15, 18, 19}, {1, 2, 3, 4, 5, 9}]

Explanation : List 1 and list 4 had 12 in common, hence all got merged to one.

Input : test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 22]]

Output : [{18, 12, 14, 15}, {1, 2, 3, 4, 5, 9}, {11, 19, 13, 22}]

Explanation : List 2 and list 3 had 1, 2 in common, hence all got merged to one.

Method : Using recursion and union()

In this, we perform the task of getting all containers having like elements using union(), depending upon conditions. Recursion is used to perform similar task to most lists required.

Example:

Python3




# utility function
def common_set(test_set):
    for idx, val in enumerate(test_set):
        for j, k in enumerate(test_set[idx + 1:], idx + 1):
  
            # getting union by conditions
            if val & k:
                test_set[idx] = val.union(test_set.pop(j))
                return common_set(test_set)
    return test_set
  
# utility function
  
  
# initializing lists
test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]
  
# printing original list
print("The original list  is : " + str(test_list))
  
test_set = list(map(set, test_list))
  
# calling recursive function
res = common_set(test_set)
  
# printing result
print("Common element groups : " + str(res))

Output:

The original list  is : [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]

Common element groups : [{11, 12, 13, 14, 15, 18, 19}, {1, 2, 3, 4, 5, 9}]


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!