Open In App

Python | Remove duplicate tuples from list of tuples

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Given a list of tuples, Write a Python program to remove all the duplicated tuples from the given list. 

Examples:

Input : [(1, 2), (5, 7), (3, 6), (1, 2)]
Output : [(1, 2), (5, 7), (3, 6)]

Input : [('a', 'z'), ('a', 'x'), ('z', 'x'), ('a', 'x'), ('z', 'x')]
Output : [('a', 'z'), ('a', 'x'), ('z', 'x')]

Method #1 : List comprehension This is a naive approach to use list comprehension. Here, we use two for loops and set data structure to cancel out all the duplicates. 

Python3




# Python3 program to remove duplicate
# tuples from list of tuples
 
def removeDuplicates(lst):
     
    return [t for t in (set(tuple(i) for i in lst))]
         
# Driver code
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(removeDuplicates(lst))


Output:

[(1, 2), (5, 7), (3, 6)]

Time complexity: O(n*logn), where n is the length of the input list. 
Auxiliary space: O(n), where n is the length of the input list.

Method #2 : List comprehension (Efficient approach) This method is efficient as compared to the above method, here we use a single for loop within list comprehension and then convert it to set to remove duplicates and then again convert it to list. 

Python3




# Python3 program to remove duplicate
# tuples from list of tuples
 
def removeDuplicates(lst):
     
    return list(set([i for i in lst]))
         
# Driver code
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(removeDuplicates(lst))


Output:

[(1, 2), (5, 7), (3, 6)]

Time complexity: O(n) where n is the number of tuples in the list. 
Auxiliary space: O(n).

Method #3 : Python enumerate() method 

Python3




# Python3 program to remove duplicate
# tuples from list of tuples
 
def removeDuplicates(lst):
     
    return [[a, b] for i, [a, b] in enumerate(lst)
    if not any(c == b for _, c in lst[:i])]
         
# Driver code
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(removeDuplicates(lst))


Output:

[[1, 2], [5, 7], [3, 6]]

Time complexity: O(n^2), where n is the length of the input list. 
Auxiliary space: O(n^2).

Method #4: Using a dictionary

This method involves creating a dictionary where the keys are the tuples, and the values are a boolean indicating whether the tuple has been encountered before. We can then iterate through the list and add the tuples to the result list if they have not been encountered before.

Python3




def remove_duplicates(lst):
    # Create an empty dictionary to store tuples as keys
    encountered = {}
    # Create an empty list to store unique tuples
    result = []
    # Iterate through the input list
    for tup in lst:
        # If the tuple has not been encountered before,
        # add it to the dictionary and the result list
        if tup not in encountered:
            encountered[tup] = True
            result.append(tup)
    # Return the list of unique tuples
    return result
#Driver code
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(remove_duplicates(lst))
#This code is contributed by Edula Vinay Kumar Reddy


Output

[(1, 2), (5, 7), (3, 6)]

Time complexity: O(n), where n is the number of tuples in the list.
Auxiliary Space: O(n), as we are creating a dictionary with n keys.

Method #5: Using recursive function.

Python3




#defining a recursive function to remove duplicate tuple in a list
def remove_duplicate(start,oldlist,newlist):
    if start==len(oldlist):return newlist  #base condition
    if oldlist[start] not in newlist:   #checking whether element present in new list  or not
        newlist.append(oldlist[start])
    return remove_duplicate(start+1,oldlist,newlist)  #recursive call
   
   
#driver code
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]    #Initaizing tuples in a list
res=remove_duplicate(0,lst,[])   #calling recursive function with correct parameters
print(res)  #printing result


Output

[(1, 2), (5, 7), (3, 6)]

Time complexity: O(n), where n is the number of tuples in the list.
Auxiliary Space: O(n), as we are creating a n function call.

Method #6:Using the dict.fromkeys

Python3




def removeDuplicates(lst):
    # Convert the list of tuples to a dictionary using dict.fromkeys
    # This automatically removes duplicates because dict keys must be unique
    dict_without_duplicates = dict.fromkeys(lst)
     
    # Return the list of keys from the dictionary, which will be the original tuples
    return list(dict_without_duplicates.keys())
 
# Example usage
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(removeDuplicates(lst))
#This code is contributed by Vinay Pinjala.


Output

[(1, 2), (5, 7), (3, 6)]

Time complexity: O(n)
Auxiliary Space: O(n)

Method #7: Using the itertools library

The itertools library provides a function called “groupby” that can be used to group similar items together. We can use this function to group the tuples by their elements, which effectively removes duplicates.

Python3




import itertools
 
def removeDuplicates(lst):
    # Sort the list of tuples to ensure duplicates are grouped together
    lst.sort()
    # Use itertools.groupby to group the tuples by their elements
    # This effectively removes duplicates
    grouped = itertools.groupby(lst)
    # Convert the grouped object back to a list of tuples
    # We only need the keys (tuples) since the values are just placeholders
    unique = [key for key,_ in grouped]
    return unique
 
# Example usage
lst = [(1, 2), (5, 7), (3, 6), (1, 2)]
print(removeDuplicates(lst))


Output

[(1, 2), (3, 6), (5, 7)]

Time complexity: O(n log n), where n is the length of the input list. 
Auxiliary space: O(n), where n is the length of the input list. 



Last Updated : 16 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads