mahdi gadget
mahdi gadget

Reputation: 113

remove duplicate dictionary python

I have a problem, I have a list like this:

[{'id': 34, 'questionid': 5, 'text': 'yes', 'score': 1}, {'id': 10, 'questionid': 5, 
'text': 'test answer updated', 'score': 2}, {'id': 20, 'questionid': 5, 'text': 'no', 
'score': 0}, {'id': 35, 'questionid': 5, 'text': 'yes', 'score': 1}]

and I want remove duplicate "questionid", "text" and "score", for example in this case I want output like this:

[{'id': 34, 'questionid': 5, 'text': 'yes', 'score': 1}, {'id': 10, 'questionid': 5, 
'text': 'test answer updated', 'score': 2}, {'id': 20, 'questionid': 5, 'text': 'no', 
'score': 0}]

How can I get this output in python?

Upvotes: 0

Views: 69

Answers (1)

user7864386
user7864386

Reputation:

We could create dictionary that has "questionid", "text" and "score" tuple as key and dicts as values and use this dictionary to check for duplicate values in data:

from operator import itemgetter
out = {}
for d in data:
    key = itemgetter("questionid", "text", "score")(d)
    if key not in out:
        out[key] = d
out = list(out.values())

Output:

[{'id': 34, 'questionid': 5, 'text': 'yes', 'score': 1},
 {'id': 10, 'questionid': 5, 'text': 'test answer updated', 'score': 2},
 {'id': 20, 'questionid': 5, 'text': 'no', 'score': 0}]

Upvotes: 1

Related Questions