【问题标题】:Python iteration, remove duplicates [closed]Python迭代,删除重复项[关闭]
【发布时间】:2014-06-30 19:56:06
【问题描述】:

我想遍历字典列表并删除重复值

example = [
{ 'name' : 'John', 'name2' : 'Mike'  },
{ 'name' : 'Smith', 'name2' : 'John' },
{ 'name' : 'Bob', 'name2' : 'Bob' },
{ 'name' : 'Mike', 'name2' : 'Smith' }
{ 'name' : 'Mike', 'name2' : 'Maria' }
]

我需要得到结果列表,像这样,没有重复值:

output = [
{ 'name' : 'John' },
{ 'name' : 'Mike' },
{ 'name' : 'Smith' },
{ 'name' : 'Bob' },
{ 'name' : 'Maria' }
]

我应该用什么来得到这个结果?谢谢!

【问题讨论】:

  • 那么,你想摆脱name2s?
  • 完全没有,如果 name2 是唯一的,我想将此值添加到输出列表中
  • 这个问题似乎离题了,因为它没有显示任何研究工作。

标签: python list dictionary iteration


【解决方案1】:

利用 Python sets 的强大功能来获得不同的项目:

example = [
{ 'name' : 'John', 'name2' : 'Mike'  },
{ 'name' : 'Smith', 'name2' : 'John' },
{ 'name' : 'Bob', 'name2' : 'Bob' },
{ 'name' : 'Mike', 'name2' : 'Smith' }
]

distinct = set()

for item in example:
    distinct.add(item['name'])
    distinct.add(item['name2'])

output = list()

for item in distinct:
    output.append({'name' : item})

print output

【讨论】:

    【解决方案2】:

    通过链接字典的values 来获取所有名称。然后使用这些名称的set 创建字典。

    >>> import itertools
    >>> [{'name': name} for name in set(itertools.chain.from_iterable(e.values() for e in example))]
    [{'name': 'Mike'}, {'name': 'John'}, {'name': 'Smith'}, {'name': 'Bob'}, {'name': 'Maria'}]
    

    【讨论】:

      【解决方案3】:

      只需创建一个空数组,循环遍历您的值,如果它不在空数组中,则为每个值...添加它:

      example = [
      { 'name' : 'John', 'name2' : 'Mike'  },
      { 'name' : 'Smith', 'name2' : 'John' },
      { 'name' : 'Bob', 'name2' : 'Bob' },
      { 'name' : 'Mike', 'name2' : 'Smith' },
      { 'name' : 'Mike', 'name2' : 'Maria' }
      ]
      result = []
      for ex in example:
          for name in ex.values():
              entry = { 'name' : name }
              if not entry in result:
                  result.append(entry)
      print result
      

      输出:

      [{'name': 'Mike'}, {'name': 'John'}, {'name': 'Smith'}, {'name': 'Bob'}, {'name': 'Maria'}]
      

      【讨论】:

        猜你喜欢
        • 2017-09-17
        • 1970-01-01
        • 2011-11-26
        • 2011-04-23
        • 1970-01-01
        • 2012-10-31
        • 2021-09-11
        • 2021-08-22
        • 1970-01-01
        相关资源
        最近更新 更多