在python中,如何从具有重复字段的列表中删除dict?
比方说我有一份口述清单。我将“重复项”定义为列表中对字段“id”具有相同值的任意两个dict(即使其他字段不同)。如何删除这些重复项 示例列表如下所示:在python中,如何从具有重复字段的列表中删除dict?,python,list,dictionary,duplicates,Python,List,Dictionary,Duplicates,比方说我有一份口述清单。我将“重复项”定义为列表中对字段“id”具有相同值的任意两个dict(即使其他字段不同)。如何删除这些重复项 示例列表如下所示: [{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}] 在这种情况下,“Mike”和“Dan”将是重复的,其中一个需要删除。哪一个都不重要 将它们转储到另一本词典中,然后再将它们取出 dict((x['id'], x) for x in L
[{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}]
在这种情况下,“Mike”和“Dan”将是重复的,其中一个需要删除。哪一个都不重要 将它们转储到另一本词典中,然后再将它们取出
dict((x['id'], x) for x in L).values()
下面函数的列表理解应该可以解决您的问题
def f(seq):
s = set()
return [x for x in seq if x['id'] not in s and not s.add(x['id'])]
这是昨天一个问题的重复。有点不同,因为那个用户想要删除完全相同的dict,而我想要删除单个字段中相同的dict,即使所有其他字段都不同。不,OP在评论中澄清了这正是他们想要做的。解决方案是相同的。甚至字段名也是相同的