Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何从具有重复字段的列表中删除dict?_Python_List_Dictionary_Duplicates - Fatal编程技术网

在python中,如何从具有重复字段的列表中删除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

比方说我有一份口述清单。我将“重复项”定义为列表中对字段“id”具有相同值的任意两个dict(即使其他字段不同)。如何删除这些重复项

示例列表如下所示:

[{'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在评论中澄清了这正是他们想要做的。解决方案是相同的。甚至字段名也是相同的