How do you remove all duplicates from a string in python?

We are given a string and we need to remove all duplicates from it? What will be the output if the order of character matters? Examples:

Input : geeksforgeeks 
Output : efgkors

This problem has existing solution please refer Remove all duplicates from a given string. 

Method 1: 

Python3

from collections import OrderedDict

def removeDupWithoutOrder(str):

    return "".join(set(str))

def removeDupWithOrder(str):

    return "".join(OrderedDict.fromkeys(str))

if __name__ == "__main__":

    str = "geeksforgeeks"

    print ("Without Order = ",removeDupWithoutOrder(str))

    print ("With Order = ",removeDupWithOrder(str))

Output

Without Order =  foskerg
With Order =  geksfor

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

Method 2: 

Python3

def removeDuplicate(str):

    s=set(str)

    s="".join(s)

    print("Without Order:",s)

    t=""

    for i in str:

        if(i in t):

            pass

        else:

            t=t+i

        print("With Order:",t)

str="geeksforgeeks"

removeDuplicate(str)

Output

Without Order: kogerfs
With Order: g
With Order: ge
With Order: ge
With Order: gek
With Order: geks
With Order: geksf
With Order: geksfo
With Order: geksfor
With Order: geksfor
With Order: geksfor
With Order: geksfor
With Order: geksfor
With Order: geksfor

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

What do OrderedDict and fromkeys() do ?

An OrderedDict is a dictionary that remembers the order of the keys that were inserted first. If a new entry overwrites an existing entry, the original insertion position is left unchanged.

For example see below code snippet : 

Python3

from collections import OrderedDict

ordinary_dictionary = {}

ordinary_dictionary['a'] = 1

ordinary_dictionary['b'] = 2

ordinary_dictionary['c'] = 3

ordinary_dictionary['d'] = 4

ordinary_dictionary['e'] = 5

print (ordinary_dictionary)    

ordered_dictionary = OrderedDict()

ordered_dictionary['a'] = 1

ordered_dictionary['b'] = 2

ordered_dictionary['c'] = 3

ordered_dictionary['d'] = 4

ordered_dictionary['e'] = 5

print (ordered_dictionary)    

Output

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

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

fromkeys() creates a new dictionary with keys from seq and values set to value and returns list of keys, fromkeys(seq[, value]) is the syntax for fromkeys() method. Parameters :

  • seq : This is the list of values which would be used for dictionary keys preparation.
  • value : This is optional, if provided then value would be set to this value.

For example see below code snippet : 

Python3

from collections import OrderedDict

seq = ('name', 'age', 'gender')

dict = OrderedDict.fromkeys(seq)

print (str(dict))

dict = OrderedDict.fromkeys(seq, 10)

print (str(dict))      

Output

OrderedDict([('name', None), ('age', None), ('gender', None)])
OrderedDict([('name', 10), ('age', 10), ('gender', 10)])

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

This article is contributed by Shashank Mishra (Gullu). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to . See your article appearing on the GeeksforGeeks main page and help other Geeks. 


How do you remove duplicates in string?

We can remove the duplicate characters from a string by using the simple for loop, sorting, hashing, and IndexOf() method.

What is the easiest way to remove duplicates in Python?

5 Ways to Remove Duplicates from a List in Python.
Method 1: Naïve Method..
Method 2: Using a list comprehensive..
Method 3: Using set().
Method 4: Using list comprehensive + enumerate().
Method 5: Using collections. OrderedDict. fromkeys().