【问题标题】:Remove duplicates from the list of dictionaries从字典列表中删除重复项
【发布时间】:2012-02-16 19:53:15
【问题描述】:

我有以下字典列表:

d = [
{ 'name': 'test', 'regions': [{'country': 'UK'}] },
{ 'name': 'test', 'regions': [{'country': 'US'}, {'country': 'DE'}] },
{ 'name': 'test 1', 'regions': [{'country': 'UK'}], 'clients': ['1', '2', '5'] },
{ 'name': 'test', 'regions': [{'country': 'UK'}] },
]

从列表中删除重复条目的最简单方法是什么?

我看到了可行的解决方案,但前提是项目没有嵌套的字典或列表

【问题讨论】:

  • 在这里你的预期结果是什么?
  • 请定义“重复”。你的意思是重复键、重复值还是重复键值?
  • 重复的键和值

标签: python list dictionary


【解决方案1】:

这个怎么样:

new_d = []
for x in d:
    if x not in new_d:
        new_d.append(x)

【讨论】:

  • 我知道这会很简单 :) 谢谢
  • 注意:这仅在对象是可散列的情况下才有效。 dict 对象不可散列,因此如果在包含不可散列对象的对象上使用此方法,您将收到错误。
  • @JohnnyUtah 这是不正确的。这适用于不可散列的对象。
  • @wim 仔细阅读我的声明。我同意这适用于可散列对象。但是,如果该可散列对象包含不可散列对象,它将(并且确实)失败。
  • @JohnnyUtah 你还是不正确。即使使用嵌套的不可散列对象,此代码也能正常工作。事实上,问题中给出的示例嵌套了不可散列的对象,并且显然适用于该示例。
猜你喜欢
  • 2016-03-14
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2017-08-13
相关资源
最近更新 更多