【python】比较两个json并返回差别
生活随笔
收集整理的這篇文章主要介紹了
【python】比较两个json并返回差别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現在要比較兩個json是否相等,若不同則返回差別
比如下面dict數據的對比:
dict1 = {"id": "50356270565167104", "name": "班級優化"}
dict2 = {"id": "50356270565167104", "name": "班級優化2"}
對比兩個dict是否相等
for src_list, dst_list in zip(sorted(dict1), sorted(dict2)):
if str(dict1[src_list]) != str(dict2[dst_list]):
print(src_list,dict1[src_list],dst_list,dict2[dst_list])
輸出為
name 班級優化 name 班級優化2
如果數據格式為
dict1 = {"id": "503", "name": "班級優化", "info": {"uid":"2017","stuName":["張三","李四"]}}
dict2 = {"id": "503", "name": "班級優化2", "info": {"uid":"2017","stuName":["張三","趙五"]}}
此時需要使用遞歸函數進行處理
首先看一個簡單的遞歸函數
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
對比這兩個dict:
def cmp(src_data,dst_data):
if isinstance(src_data, dict):
"""若為dict格式"""
for key in dst_data:
if key not in src_data:
print("src不存在這個key")
for key in src_data:
if key in dst_data:
thiskey = key
"""遞歸"""
cmp(src_data[key], dst_data[key])
else:
dic[key] = ["dst不存在這個key"]
elif isinstance(src_data, list):
"""若為list格式"""
if len(src_data) != len(dst_data):
print("list len: '{}' != '{}'".format(len(src_data), len(dst_data)))
for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)):
"""遞歸"""
cmp(src_list, dst_list)
else:
if str(src_data) != str(dst_data):
print(src_data)
輸出為
班級優化
李四
總結
以上是生活随笔為你收集整理的【python】比较两个json并返回差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP/3 简介
- 下一篇: 【百宝箱】CLion: Cound no