python - 获取两个字典列表之间的差异(增量)

标签 python list dictionary delta

我有以下 Python 数据结构:

data1 = [{'name': u'String 1'}, {'name': u'String 2'}]
data2 = [{'name': u'String 1'}, {'name': u'String 2'}, {'name': u'String 3'}]

我正在寻找获得两个列表之间差异的最佳方法。 Python 中有没有像 JavaScript Underscore.js (_.difference) 库一样方便的东西?

最佳答案

这个怎么样:

>>> [x for x in data2 if x not in data1]
[{'name': u'String 3'}]

编辑:

如果您需要对称差异,您可以使用:

>>> [x for x in data1 + data2 if x not in data1 or x not in data2]

>>> [x for x in data1 if x not in data2] + [y for y in data2 if y not in data1]

再修改一次

你也可以使用集合:

>>> from functools import reduce
>>> s1 = set(reduce(lambda x, y: x + y, [x.items() for x in data1]))
>>> s2 = set(reduce(lambda x, y: x + y, [x.items() for x in data2]))

>>> s2.difference(s1)
>>> s2.symmetric_difference(s1)

关于python - 获取两个字典列表之间的差异(增量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755376/

相关文章:

python - 稍微烦躁的数据是相等的

Python Title Case,但保留预先存在的大写

python - 在 Python 中对电子邮件传送进行单元测试

java - 删除后元素的 ID 会怎样?

c - 从链表中删除节点

arrays - 为什么map函数会改变perl中输入数组的值?

python - 如何更改BeautifulSoup的解析器?

python - 转换pandas.groupby为dict

swift - 如何从获取请求数组结果中分配键,并从空字典中的文本字段输入中分配值?

r - 寻找替换列表中字符向量元素的方法