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

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

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


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.

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


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


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.