【问题标题】:list of duplicate dictionaries copy single entry to another list重复字典列表将单个条目复制到另一个列表
【发布时间】:2010-11-20 09:57:45
【问题描述】:

又是新手问题。

假设我有一个嵌套字典列表。

a = [{"value1": 1234, "value2": 23423423421, "value3": norway, "value4": charlie},
     {"value1": 1398, "value2": 23423412221, "value3": england, "value4": alpha},
     {"value1": 1234, "value2": 23234231221, "value3": norway, "value4": charlie},
     {"value1": 1398, "value2": 23423213121, "value3": england, "value4": alpha}]

我想要的是移动 value1、value3 和 value4 匹配的每个重复项的奇异条目。结果应该是这样的:

b = [{"value1": 1398, "value2": 23423412221, "value3": england, "value4": alpha},
     {"value1": 1234, "value2": 23234231221, "value3": norway, "value4": charlie}]

原始列表 a 应保持其原始状态。

【问题讨论】:

  • 如何定义两个目录是重复的?它们的所有值都相等还是只是“value1”或...?
  • 没关系,我解决了。我如何删除它:)
  • 你没有。您发布您的答案,以便其他人受益。
  • 当然,我会的。给我几秒钟。
  • "假设我有一个嵌套字典列表。"您的示例是简单字典的简单列表。没有任何东西是嵌套的。请提供带有“嵌套”字典的示例,或删除“嵌套”一词。当单词与示例代码不匹配时会令人困惑。

标签: python dictionary list


【解决方案1】:

最近有一个类似的问题。试试这个entry

事实上,您问过这个问题:“假设存在多个条目,其中 value3 和 value4 与其他嵌套字典相同。我怎样才能快速轻松地找到并删除那些重复的字典。”

听起来是一样的,对吧?

编辑:大量窃取 Alex 的代码,看起来像这样:

import itertools
import pprint
import operator

alpha, charlie, norway, england = range(4)

a = [{"value1": 1234, "value2": 23423423421, "value3": norway, "value4": charlie},
     {"value1": 1398, "value2": 23423412221, "value3": england, "value4": alpha}, 
     {"value1": 1234, "value2": 23234231221, "value3": norway, "value4": charlie}, 
     {"value1": 1398, "value2": 23423213121, "value3": england, "value4": alpha}]


getvals = operator.itemgetter('value1', 'value3', 'value4')

a.sort(key=getvals)

b = [g.next() for _, g in itertools.groupby(a, getvals)]
pprint.pprint(b)

结果是:

[{'value1': 1234, 'value2': 23423423421L, 'value3': 2, 'value4': 1},
 {'value1': 1398, 'value2': 23423412221L, 'value3': 3, 'value4': 0}]

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-11-25
    • 1970-01-01
    • 2012-07-21
    • 2012-11-25
    相关资源
    最近更新 更多