Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python | Remove tuples having duplicate first value from given list of tuples

  • Last Updated : 29 Mar, 2019

Given a list of tuples, the task is to remove all tuples having duplicate first values from the given list of tuples.

Examples:

Input:  [(12.121, 'Tuple1'), (12.121, 'Tuple2'), 
         (12.121, 'Tuple3'), (923232.2323, 'Tuple4')]
Output:  [(12.121, 'Tuple1'), (923232.2323, 'Tuple4')]

Input:  [('Tuple1', 121), ('Tuple2', 125), 
         ('Tuple1', 135), ('Tuple4', 478)]
Output:  [('Tuple1', 121), ('Tuple2', 125), ('Tuple4', 478)]

Below are some ways to achieve the above task.

Method #1: Using Iteration




# Python code to remove tuples having 
# duplicate first value from given
# list of tuples
  
# Input list initialization
Input = [(12.121, 'Geeksforgeeks is best'), 
         (19212.22, 'India is best'), 
         (12.121, 'Cyware is best.'),
         (923232.2323, 'Jiit is best')]
  
# using set
visited = set()
  
# Output list initialization
Output = []
  
# Iteration
for a, b in Input:
    if not a in visited:
        visited.add(a)
        Output.append((a, b))
  
# Printing
print("Initial list of tuple is \n", Input)
print("List of tuple after removing duplicates:\n ", Output)
Output:

Initial list of tuple is
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (12.121, ‘Cyware is best.’), (923232.2323, ‘Jiit is best’)]

List of tuple after removing duplicates:
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (923232.2323, ‘Jiit is best’)]

 
Method #2: Using list comprehension




# Python code to remove tuples having 
# duplicate first value from given
# list of tuples
  
# Input list initialization
Input = [(12.121, 'Geeksforgeeks is best'), 
         (19212.22, 'India is best'), 
         (19212.22, 'Cyware is best.'), 
         (923232.2323, 'Jiit is best')]
  
# Using set
seen = set()
  
# using list comprehension
Output = [(a, b) for a, b in Input 
         if not (a in seen or seen.add(a))]
  
# Printing
print("Initial list of tuple is" \n, Input)
print("\nList of tuple after removing duplicates \n", Output)
Output:

Initial list of tuple is
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (19212.22, ‘Cyware is best.’), (923232.2323, ‘Jiit is best’)]

List of tuple after removing duplicates [(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (923232.2323, ‘Jiit is best’)]

 
Method #3: Using itertools




# Python code to remove tuples having 
# duplicate first value from given
# list of tuples
  
import itertools
  
# Input list initialization
Input = [(12.121, 'Geeksforgeeks is best'), 
         (19212.22, 'India is best'), 
         (923232.2323, 'Cyware is best.'), 
         (923232.2323, 'Jiit is best')]
  
# Using groupby
Output = ([next(b) for a, b in itertools.groupby(
                         Input, lambda y: y[0])])
  
# Printing
print("Initial list of tuple is\n", Input)
print("\nList of tuple after removing duplicates\n", Output)
iv class = 'outputDiv'> Output:

Initial list of tuple is
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (923232.2323, ‘Cyware is best.’), (923232.2323, ‘Jiit is best’)]

List of tuple after removing duplicates
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (923232.2323, ‘Cyware is best.’)]

 
Method #4: Using OrderedDict

This is the most elegant way to remove duplicates is using OrderedDict.




# Python code to remove tuples having 
# duplicate first value from given
# list of tuples
  
from collections import OrderedDict
  
# Input list initialization
Input = [(12.121, 'Geeksforgeeks is best'), 
         (19212.22, 'India is best'), 
         (19212.22, 'Cyware is best.'), 
         (923232.2323, 'Jiit is best')]
  
# Using orderedDIct
Output = OrderedDict(Input).items()
  
# Printing
print("Initial list of tuple is\n", Input)
print("\nList of tuple after removing duplicates\n", Output)
Output:

Initial list of tuple is
[(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘India is best’), (19212.22, ‘Cyware is best.’), (923232.2323, ‘Jiit is best’)]

List of tuple after removing duplicates
odict_items([(12.121, ‘Geeksforgeeks is best’), (19212.22, ‘Cyware is best.’), (923232.2323, ‘Jiit is best’)])


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!