我有以下 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'}]
Edit:
如果您需要对称差异,您可以使用:
>>> [x for x in data1 + data2 if x not in data1 or x not in data2]
or
>>> [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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)