Python 如何比较两个不同列表中字典的键和值并打印不匹配的键和值
我有两个列表,我的目标是比较列表二和列表一,并打印差异Python 如何比较两个不同列表中字典的键和值并打印不匹配的键和值,python,Python,我有两个列表,我的目标是比较列表二和列表一,并打印差异 list_one = [{'name': 'xyz', 'age': 25}, {'name': 'pqr', 'age': 50}, {'name': 'abc', 'age': 30}] list_two = [{'name': 'xyz', 'age': 25, 'hair_color': 'brown'}, {'name': 'pqr', 'age': 30,
list_one = [{'name': 'xyz', 'age': 25},
{'name': 'pqr', 'age': 50},
{'name': 'abc', 'age': 30}]
list_two = [{'name': 'xyz', 'age': 25, 'hair_color': 'brown'},
{'name': 'pqr', 'age': 30, 'hair_color': 'black'},
{'name': 'lmn', 'age': 30, 'hair_color': 'black'}]
预期产出:
{'Output': [{'name': 'xyz', 'age': 25, 'Status': 'Match'},
{'name': 'pqr', 'age': 30, 'Status': 'age mismatch', 'Expected_age':'50'},
{'name': 'lmn', 'age': 30, 'Status': 'total mismatch'}]}
我尝试使用以下代码获得预期的输出,但没有得到:
listOne = list_one
listTwo = list_two
listKey = []
listValues = []
for x in listOne:
listKey.append(x['name'])
listValues.append(x['age'])
output_comp={}
output_comp['Output']=[]
for i in listTwo:
if i['name'] in listKey:
if i['age'] in listValues:
output_comp['Output'].append({'name': i['name'],
'age': i['age'],
'Status': 'Match'})
else:
output_comp['Output'].append({'name': i['name'],
'age':i['age'],
'Status':'age mismatch',
'Expected_age': x['age']})
else:output_comp['Output'].append({'name': i['name'],
'age': i['age'],
'Status': 'total mismatch'})
嗨,我做了一个简单的循环,有点像你想要的,但因为我现在必须去某个地方,所以我不能完成它。所以它得到了不匹配的dict,告诉你它有什么问题,我只是没有实现它的“匹配”部分,但你可以使用它并找出如何做到这一点,而且我还没有测试它的多个“错误”值 这是密码
list_one=[{'name':'xyz','age':25},
{'name':'pqr','age':50},
{'name':'abc','age':30}]
列表二=[{'name':'xyz','age':25','hair\u color':'brown'},
{'name':'pqr','age':30,'hair_color':'black'},
{'name':'lmn','age':30,'hair_color':'black'}]
错误列表=[]
直线=0
对于列表1中的值:
value=value.items()
checkvalue=列表二[行]
行+=1
对于k,v值:
如果(v!=校验值[k]):
校验值[“不匹配”]=k
校验值[“预期”]=v
错误列表。追加(检查值)
打印(错误列表)
输出:
[{'name':'pqr','age':30,'hair_color':'black','Mismatch':'age','Expected':50},{'name':'lmn','age':30,'hair_color':'black','Mismatch':'name','Expected':'abc'}]
嗨,我做了一个简单的循环,有点满足你的要求,但因为我现在必须去某个地方,所以我无法完成它。所以它得到了不匹配的dict,告诉你它有什么问题,我只是没有实现它的“匹配”部分,但你可以使用它并找出如何做到这一点,而且我还没有测试它的多个“错误”值
这是密码
list_one=[{'name':'xyz','age':25},
{'name':'pqr','age':50},
{'name':'abc','age':30}]
列表二=[{'name':'xyz','age':25','hair\u color':'brown'},
{'name':'pqr','age':30,'hair_color':'black'},
{'name':'lmn','age':30,'hair_color':'black'}]
错误列表=[]
直线=0
对于列表1中的值:
value=value.items()
checkvalue=列表二[行]
行+=1
对于k,v值:
如果(v!=校验值[k]):
校验值[“不匹配”]=k
校验值[“预期”]=v
错误列表。追加(检查值)
打印(错误列表)
输出: