如何从python中具有重复字段的列表中删除dicts?

时间:2012-06-20 06:58:13

标签: python list dictionary duplicates

假设我有一个dicts列表。我将“重复”定义为列表中具有相同值的字段“id”的任何两个dicts(即使其他字段不同)。如何删除这些重复项。

示例列表如下:

[{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}]

在这种情况下,'Mike'和'Dan'将是重复的,其中一个需要删除。哪一个没关系。

2 个答案:

答案 0 :(得分:10)

将它们转储到另一个词典中,然后将它们拉出来。

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

答案 1 :(得分:2)

以下功能的列表理解应解决您的问题。

def f(seq):
    s = set()
    return [x for x in seq if x['id'] not in s and not s.add(x['id'])]