Python 重复字典列表将单个条目复制到另一个列表

Python 重复字典列表将单个条目复制到另一个列表,python,dictionary,list,Python,Dictionary,List,又是新手问题 假设我有一个嵌套字典列表 a = [{"value1": 1234, "value2": 23423423421, "value3": norway, "value4": charlie}, {"value1": 1398, "value2": 23423412221, "value3": england, "value4": alpha}, {"value1": 1234, "value2": 23234231221, "value3": norway, "v

又是新手问题


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

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

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

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

事实上,您提出了这个问题:“假设存在多个条目,其中value3和value4与其他嵌套字典相同。如何快速轻松地查找和删除这些重复的字典。”

听起来是一样的,对吧

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

b = [{"value1": 1398, "value2": 23423412221, "value3": england, "value4": alpha},
     {"value1": 1234, "value2": 23234231221, "value3": norway, "value4": charlie}]
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}]

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