Python 将两个字典值与列表中的键进行比较
需要比较group1和group2的几个键是否相同。group1和group2是那么多字典中的列表。我只需要比较group1和group2之间的几个键及其值。用一个示例进行解释。示例:keys_to_compare={'name','num',working}来自group1和group2。这应该满足您的需要Python 将两个字典值与列表中的键进行比较,python,dictionary,Python,Dictionary,需要比较group1和group2的几个键是否相同。group1和group2是那么多字典中的列表。我只需要比较group1和group2之间的几个键及其值。用一个示例进行解释。示例:keys_to_compare={'name','num',working}来自group1和group2。这应该满足您的需要 group1= [ { 'Name': 'C21114', 'Description': '', 'n
group1= [ {
'Name': 'C21114',
'Description': '',
'num': '12321114',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'\xef\xbb\xbfUser_ID': 'C21114',
'Password': '*SECRET*',
},
{
'Name': 'Mahes',
'Description': '',
'num': '1026',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'\xef\xbb\xbfUser_ID': 'Mahi',
'Password': '*SECRET*',
},
{
'Name': 'pri',
'Description': '',
'num': '1027',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'\xef\xbb\xbfUser_ID': 'priya',
'Password': '*SECRET*',
}]
group2= [{
'Name': 'C21114',
'Description': '',
'num': '12321114',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'User_ID': 'C21114',
'Password': '*SECRET*',
},
{
'Name': 'Mahes',
'Description': '',
'num': '1026',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'User_ID': 'Mahi',
'Password': '*SECRET*',
},
{
'Name': 'pri',
'Description': '',
'num': '1027',
'working': 'true',
'belongs': 'Default',
'Expiry_Date': '',
'User_ID': 'priya',
'Password': '*SECRET*',
}]
将if语句更改为对具有相同值的元素执行您想要的操作。我必须对您想要的输出进行假设。我创建了一个列表。最里面的列表是匹配项索引(group1然后group2)的一部分。代码如下:
key_to_compare = ['Name', 'num', 'working']
for key in key_to_compare:
for d1 in group1:
for d2 in group2:
if d1[key] == d2[key]:
print "same values for %s %s %s" % (key, d1[key], d2[key])
结果是:
keys_to_compare = ['Name','num','working']
matches = []
for idx1 in range(len(group1)):
ref1 = group1[idx1]
found = False
for idx2 in range(len(group2)):
ref2 = group2[idx2]
found = True
for key in keys_to_compare:
if ref1[key] != ref2[key]:
found = False
if found:
matches.append([idx1,idx2])
break
if found: continue
print 'matches=%r' % (matches)
作为一个函数实现,这将为您提供您想要的:
matches=[[0, 0], [1, 1], [2, 2]]
输入键名,如果两个组中的值相同,则返回True,否则返回False。例如,要检查列表中的键,您将执行以下操作:
def compare(key):
g1 = []
g2 = []
for i in group1:
g1.append(i[key])
for j in group2:
g2.append(j[key])
return g1 == g2
欢迎来到StackOverflow。如果你发布你的尝试,你的帖子可能会得到更多的回复谢谢,用这个来完成我的事情。
keys_to_compare = ['Name','num','working']
for x in keys_to_compare:
print compare(x)