2016-09-16 58 views
0

我想做一个函数,通过查看它们的键来比较python中的两个字典列表。当列表A包含一个字典,该列表中的某个条目与列表B中的字典中的条目具有相同的键时,该函数应该返回True。在Python中比较两个字典列表

这里的列表A和B的例子:

listA = [{'key1':'value1'}, {'key2':'value2'}] 
listB = [{'key1':'value3'}, {'key3':'value4'}] 

在这个例子中,函数应该返回true,因为key1的匹配。

在此先感谢。

+1

请把你已经尝试了什么。这将有所帮助 – Sandeep

+0

列表中的每个python字典是否总是包含单个键值对还是可以具有不同的大小? – MarAja

+0

它总是一个键值对。 – fabero

回答

2

首先你必须把密钥从字典列表中拿出来,然后进行比较。

keysA = [k for x in listA for k in x.keys()] 
keysB = [k for x in listB for k in x.keys()] 

any(k in keysB for k in keysA) 
0

这是你在找什么?

def cmp_dict(a, b): 
    return any(frozenset(c) & frozenset(d) for c, d in zip(a, b)) 

下面是它的用法的演示:

>>> listA = [{'key1':'value1'}, {'key2':'value2'}] 
>>> listB = [{'key1':'value3'}, {'key3':'value4'}] 
>>> cmp_dict(listA, listB) 
True 
>>>