Python | Remove unordered duplicate elements from a list
Given a list, the task is to remove the duplicate elements. All the elements which are not in same order but made of same characters/numbers are considered as duplicates.
Examples:
Input : ['gfg', 'ggf', 'fgg', 'for', 'orf', 'ofr', 'rfo', 'rof', 'fro'] Output : ['for', 'fgg'] Input: ['110', '101', '001', '010', '100'] Output: ['001', '011']
Method #1 : Using set
Python3
# Python code to remove duplicate # unordered elements from a list from collections import Counter # List initialisation Input = [ '1213' , '1231' , '1123' , '1132' , '2113' , '2311' , '0007' , '0016' , '0025' , '0034' , '0043' , '0052' , '0061' , '0070' , '0304' , '0313' , '0322' , '0098' , '9800' , '0331' , '0340' , '0403' , '0412' , '0421' , '0430' , '0502' , '8900' , '8009' , '0511' , '0520' , '0601' , '0610' , '0700' , '1006' , '1015' ] # Set initialisation s = set () # Output list initialisation output = [] for i in Input : if tuple (Counter( sorted (i, key = int )).items()) in s: pass else : s.add( tuple (Counter( sorted (i, key = int )).items())) output.append(i) # Printing output print (output) |
Output:
['1213', '0007', '0016', '0025', '0034', '0313', '0322', '0098', '0412', '0511']
Method #2 :
Python3
# Python code to remove duplicate # unordered elements from a list # List initialisation Input = [ 'gfg' , 'ggf' , 'fgg' , 'for' , 'orf' , 'ofr' , 'rfo' , 'rof' , 'fro' ] # Getting unique nos Output = list ({''.join( sorted (n)) for n in Input }) # Printing Output print (Output) |
Output:
['for', 'fgg']
Method #3:Using Counter() method
Python3
# Python code to remove duplicate # unordered elements from a list from collections import Counter # List initialisation Input = [ 'gfg' , 'ggf' , 'fgg' , 'for' , 'orf' , 'ofr' , 'rfo' , 'rof' , 'fro' ] sortedList = list (''.join( sorted (n)) for n in Input ) freq = Counter(sortedList) output = list (freq.keys()) output.sort() # Printing Output print (output) |
Output
['fgg', 'for']
Time Complexity:O(NLogN)
Auxiliary Space: O(N)
Please Login to comment...