在python中找到2个对象数组之间的值差异

问题描述

我有 2 个对象数组:

a = [{'a': 1,'b': 2},{'c': 3,'d': 4},{'e': 5,'f': 6}]
b = [{'a': 1,{'g': 3,'h': 4},{'f': 6,'e': 5}]

Output:
a - b = [{'c': 3,'d': 4}] ("-" symbol is only for representation,showing difference. Not mathematical minus.)
b - a = [{'g': 3,'h': 4}]

在每个数组中,key 的顺序可能不同。我可以尝试以下并检查:

for i in range(len(a)):
   current_val = a[i]
   for x,y in current_val.items:
      //search x keyword in array b and compare it with b

但是这种方法感觉不对。有没有更简单的方法来做到这一点,或者任何可以做到这一点的实用程序库类似于 fncpydash

解决方法

您可以使用NULL

lambda

g = lambda a,b : [x for x in a if x not in b]

g(a,b) # a-b


[{'c': 3,'d': 4}]

g(b,a) # b-a
,

只要测试所有元素是否都在另一个数组中

a = [{'a': 1,'b': 2},{'c': 3,'d': 4},{'e': 5,'f': 6}]
b = [{'a': 1,{'g': 3,'h': 4},{'f': 6,'e': 5}]


def find_diff(array_a,array_b):
    diff = []
    for e in array_a:
        if e not in array_b:
            diff.append(e)
    return diff

print(find_diff(a,b))
print(find_diff(b,a))

与列表理解相同

def find_diff(array_a,array_b):
    return [e for e in array_a if e not in array_b]
,

这里是减去字典列表的代码

a = [{'a': 1,{'e': 6,'e': 6}]
a_b = []
b_a = []
for element in a:
    if element not in b:
        a_b.append( element )
for element in b:
    if element not in a:
        b_a.append( element )
print("a-b =",a_b)
print("b-a =",b_a)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...