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'}]
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'}]
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'}]
Use pandas, if it doesn't have nested dict
import pandas as pd
list = pd.DataFrame(list).drop_duplicates().to_dict(orient='records')
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'}]
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'}]
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'}]