【问题标题】:How do I remove dicts from a list with duplicate fields in python?如何从 python 中具有重复字段的列表中删除字典?
【发布时间】:2012-06-22 06:47:14
【问题描述】:

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

示例列表类似于:

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

在这种情况下,“Mike”和“Dan”将是重复的,需要删除其中一个。不管是哪一个。

【问题讨论】:

  • 这是昨天stackoverflow.com/questions/11092511/…的一个问题的重复@
  • 这有点不同,因为该用户想要删除完全相同的字典,而我想删除单个字段中相同的字典,即使所有其他字段都不同。
  • 不,OP 在评论中澄清说,这正是他们想要做的。解决方案是相同的。连字段名都一样

标签: python list dictionary duplicates


【解决方案1】:

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

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'])]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-01
      • 2023-01-08
      • 2014-01-28
      • 2011-10-28
      • 2019-01-09
      • 2022-11-27
      • 1970-01-01
      • 2016-03-14
      相关资源
      最近更新 更多