如何在Python中从具有重复字段的列表中删除字典?

5
假设我有一个字典列表。 我定义“重复项”为列表中具有相同“id”字段值的任何两个字典(即使其他字段不同)。 如何删除这些重复项。
例如列表如下:
[{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}]

在这种情况下,“Mike”和“Dan”将是重复的,其中一个需要被删除。无论哪一个都可以。

1
这是昨天的一个问题的重复,链接为https://dev59.com/9Wgu5IYBdhLWcg3wxZpL。 - John La Rooy
这有点不同,因为那个用户想要删除完全相同的字典,而我想要删除在一个字段中相同的字典,即使所有其他字段都不同。 - user1468332
不,原帖作者在评论中澄清了这正是他们想要做的。解决方案是相同的。甚至字段名称也相同。 - John La Rooy
2个回答

10

将它们转储到另一个字典中,然后再取出来。

dict((x['id'], x) for x in L).values()

2
以下的函数列表推导式应该可以解决你的问题。
def f(seq):
    s = set()
    return [x for x in seq if x['id'] not in s and not s.add(x['id'])]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接