Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何比较两个不同列表中字典的键和值并打印不匹配的键和值_Python - Fatal编程技术网

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
错误列表。追加(检查值)
打印(错误列表)
输出: