python 关于两个列表的数据的差异比对

在网上查找很多关于python对两个列表数据比对,比如set方式,cmp方式,或者合并差等方式,都无法达到我实际想要,往上各种方式,大多都没考虑列表中有重复数据和列表有序的问题,特根据项目需要写了如下代码,仅供自己项目中使用:

代码说明:

按列表的序列,依次比对,包括数据的类型都会做比较

#encoding=utf-8
a=[1,2,3,4,5,6,7,8,9,10]
c=[1,2,3,4,5,6,8,7]
b=[1,22,'3',4,5,6,7,8]
#print(a[2:-2])
def List_Cp_List(list1,list2):
    if list1==list2:
        return {"status": True, "message": [u"两个列表中数据一致!"]}
    elif len(list1)==len(list2):
        msg=[]
        for i in range(len(list1)):
            if list1[i]!=list2[i]:
                if type(list1[i])!=type(list2[i]) and str(list1[i])==str(list2[i]):
                    msg.append(u"表I中第%s位元素【%s】的数据类型【%s】!=表II中第%s位【%s】的数据类型【%s】" % (
                    i + 1, list1[i], type(list1[i]), i + 1,list2[i],type(list2[i])))
                else:
                    msg.append(u"表I中第%s位元素【%s】!=表II中第%s位【%s】"%(i+1,list1[i],i+1,list2[i]))
        return {"status": False, "message": msg}

    elif len(list1)>len(list2):
        msg=[]
        for i in range(len(list2)):
            if list1[i]!=list2[i]:
                if type(list1[i]) != type(list2[i]) and str(list1[i]) == str(list2[i]):
                    msg.append(u"表I中第%s位元素【%s】的数据类型【%s】!=表II中第%s位【%s】的数据类型【%s】" % (
                    i + 1, list1[i], type(list1[i]), i + 1, list2[i], type(list2[i])))
                else:
                    msg.append(u"表I中第%s位元素【%s】!=表II中第%d位【%s】"%(i+1,list1[i],i+1,list2[i]))
        for i in range(len(list2),len(list1)):
            msg.append(u"表I中第%s位元素【%s】不在表II中" % (i+1,list1[i]))
        return {"status": False, "message": msg}
    else:
        msg=[]
        for i in range(len(list1)):
            if list1[i]!=list2[i]:
                if type(list1[i]) != type(list2[i]) and str(list1[i]) == str(list2[i]):
                    msg.append(u"表I中第%s位元素【%s】的数据类型【%s】!=表II中第%s位【%s】的数据类型【%s】"%(i+1,list1[i],type(list1[i]),i+1,list2[i],type(list2[i])))
                else:
                    msg.append(u"表I中第%d位元素【%s】!=表II中第%d位【%s】"%(i+1,list1[i],i+1,list2[i]))
        for i in range(len(list1),len(list2)):
            msg.append(u"表II中第%s位元素【%s】不在表I中" % (i+1,list2[i]))
        return {"status": False, "message": msg}

re=List_Cp_List(b,a)
print re["status"]
for i in re["message"]:
    print i

 

 

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值