0

I want to remove the dictionary from the list which contains duplicate values

list = [{'data': 'sql_data'},{'data':'mongo_data'},{'data':'sql_data'}]

list = [{'data': 'sql_data'},{'data':'mongo_data'}]
srinivas
  • 53
  • 8

5 Answers5

2

Use sorted with set:

import ast
print(sorted(map(ast.literal_eval,set(map(str,list))),key=list.index))

Or:

l=[]
for i in list:
    if i not in l:
        l.append(i)

Both Output:

[{'data': 'sql_data'},{'data':'mongo_data'}]
U13-Forward
  • 69,221
  • 14
  • 89
  • 114
2

Use pandas, if it doesn't have nested dict

import pandas as pd
list = pd.DataFrame(list).drop_duplicates().to_dict(orient='records')
Bimal Gangawal
  • 385
  • 2
  • 17
2
s = [{'data': 'sql_data'},{'data':'mongo_data'},{'data':'sql_data'}]

new = []
for x in s:
    if x not in new: new.append(x)        
print(new)

OR

one-line:

print([i for n, i in enumerate(s) if i not in s[n + 1:]])

OUTPUT:

[{'data': 'sql_data'}, {'data': 'mongo_data'}]
DirtyBit
  • 16,613
  • 4
  • 34
  • 55
2

Try this, it works even when the key is not 'data':

import json

list = [{'data': 'sql_data'}, {'data': 'mongo_data'}, {'data': 'sql_data'}, {'user': 'admin'}, {'user': 'admin'}]
list_deduplicated = [json.loads(i) for i in set([json.dumps(j) for j in list])]
print(list_deduplicated)

The output will be:

[{'data': 'mongo_data'}, {'data': 'sql_data'}, {'user': 'admin'}]
1

Use list comprehensions to solve this -

my_list=[{'data': 'sql_data'},{'data':'mongo_data'},{'data':'sql_data'}]
unique_list = [e for i, e in enumerate(my_list) if my_list.index(e) == i ]
print(unique_list)
    [{'data': 'sql_data'}, {'data': 'mongo_data'}]
cph_sto
  • 7,189
  • 12
  • 42
  • 78