What is the easiest way to remove duplicates in python?

This article focuses on one of the operations of getting the unique list from a list that contains a possible duplicated. Remove duplicates from list operation has a large number of applications and hence, its knowledge is good to have. 

Method 1: Using *set() 

This is the fastest and smallest method to achieve a particular task. It first removes the duplicates and returns a dictionary which has to be converted to list. 

Python3

l = [1, 2, 4, 2, 1, 4, 5]

print("Original List: ", l)

res = [*set(l)]

print("List after removing duplicate elements: ", res)

Output:

Original list: [1, 2, 4, 2, 1, 4, 5]
List after removing duplicate elements: [1, 2, 4, 5]

Method 2: Using list comprehension 

This method has working similarly to the above method, but this is just a one-liner shorthand of a longer method done with the help of list comprehension.  

Python3

test_list = [1, 3, 5, 6, 3, 5, 6, 1]

print (& quot

        The original list is : & quot

        + str(test_list))

res = []

[res.append(x) for x in test_list if x not in res]

print (& quot

        The list after removing duplicates : & quot

        + str(res))

Output :

The original list is : [1, 3, 5, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 3, 5, 6]

Method 3: Using set()

This is the most popular way by which the duplicates are removed from the list. But the main and notable drawback of this approach is that the ordering of the element is lost in this particular method.  

Python3

test_list = [1, 5, 3, 6, 3, 5, 6, 1]

print (& quot

        The original list is : & quot

        + str(test_list))

test_list = list(set(test_list))

print (& quot

        The list after removing duplicates : & quot

        + str(test_list))

Output :

The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 3, 5, 6]

Method 4: Using list comprehension + enumerate() 

list comprehension coupled with enumerate function can also achieve this task. It basically looks for already occurred elements and skips adding them. It preserves the list ordering.  

Python3

test_list = [1, 5, 3, 6, 3, 5, 6, 1]

print (& quot

        The original list is : & quot

        + str(test_list))

res = [i for n, i in enumerate(test_list) if i not in test_list[:n]]

print (& quot

        The list after removing duplicates : & quot

        + str(res))

Output :

The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 5, 3, 6]

Method 5: Using collections.OrderedDict.fromkeys()

This is the fastest method to achieve a particular task. It first removes the duplicates and returns a dictionary which has to be converted to list. This works well in the case of strings also. 

Python3

from collections import OrderedDict

test_list = [1, 5, 3, 6, 3, 5, 6, 1]

print (& quot

        The original list is : & quot

        + str(test_list))

res = list(OrderedDict.fromkeys(test_list))

print (& quot

        The list after removing duplicates : & quot

        + str(res))

Output:

The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 5, 3, 6]

Method 6: Using in, not in operators

Python3

test_list = [1, 5, 3, 6, 3, 5, 6, 1]

print ("The original list is : "+ str(test_list))

res = []

for i in test_list:

    if i not in res:

        res.append(i)

print ("The list after removing duplicates : "+ str(res))

Output

The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 5, 3, 6]


How do you eliminate duplicates in Python?

Use DataFrame. drop_duplicates() to Drop Duplicate and Keep First Rows. You can use DataFrame. drop_duplicates() without any arguments to drop rows with the same values on all columns.

How do I remove immediate duplicates in Python?

Using the groupby function, we can group the together occurring elements as one and can remove all the duplicates in succession and just let one element be in the list. This function can be used to keep the element and delete the successive elements with the use of slicing.

How do I remove duplicates from a list?

Given an ArrayList with duplicate values, the task is to remove the duplicate values from this ArrayList in Java..
Get the ArrayList with duplicate values..
Create a new List from this ArrayList..
Using Stream(). distinct() method which return distinct object stream..
convert this object stream into List..