Python比较字典形式的列表是不是部分相等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python比较字典形式的列表是不是部分相等相关的知识,希望对你有一定的参考价值。

参考技术A 在工作中遇到有两个字典形式的列表list1、list2

需求是当两个列表有共同ID时,比较对应value的值是否相等

1、首先找到共同ID

运行后提取到的共同ID结果:

2、循环,根据共同ID查找字典中对应value的值

运行结果:

Python--比较两个字典部分value是否相等(可以用于接口自动化)

eg:例如你调用了一个新增的接口,以往功能测试的话,你再web端新增一个店铺之后,你肯定要去数据库中查看,这些数据插入的对不对,是否正确的插入了每个字段

# 比较两个字典部分是否相等
def compare_two_dict(dict1, dict2, key_list):
    flag = True
    keys1 = dict1.keys()
    keys2 = dict2.keys()
    if len(key_list) != 0:
        for key in key_list:
            if key in keys1 and key in keys2:
                if dict1[key] == dict2[key]:
                    flag = flag & True
                else:
                    flag = flag & False
            else:
                raise Exception(\'key_list contains error key\')
    else:
        raise Exception(\'key_list is null\')
    if flag:
        result = \'PASS\'
    else:
        result = \'FAILED\'
    return result


if __name__ == \'__main__\':
    dict1 = {
        \'a\': 1,
        \'b\': 2,
        \'c\': 3,
        \'d\': 4
    }
    dict2 = {
        \'a\': 1,
        \'b\': 2,
        \'c\': 3,
        \'d\': 8
    }
    key_list = [\'a\', \'c\', \'b\', \'d\']
    result = compare_two_dict(dict1, dict2, key_list)
    print(result)

 

按照上面的列子我写出了自己的代码:前置条件:

但是有个前提条件:

 

 

\'\'\'
table:表名
key:要查找的字段名称
value:要查找的字段值
**kwargs:要检验的字段值,通过我新增的数据与数据库中的对比
例如你调用了一个新增的接口,以往功能测试的话,你再web端新增一个店铺之后,你肯定要去数据库中查看,这些数据插入的对不对,是否正确的插入了每个字段
\'\'\'
def assert_add_contents(db,cursor,table,key,value,**kwargs):
    sql = \'select * from {} where {}={}\'.format(table,key,value)
    num = cursor.execute(sql)
    result = cursor.fetchall()
    print("查找到%d条数据" % num)
    print("数据库查询数据为:{}".format(result))
    # 这个是要对比的字段
    field_list = list(kwargs.keys())
    if num > 0:
        print("kwargs:{}".format(kwargs))
        print("result:{}".format(result[0]))
        flag = True
        keys1 = kwargs.keys()
        keys2 = result[0].keys()
        if len(field_list) != 0:
            for key in field_list:
                if key in keys1 and key in keys2:
                    if kwargs[key] == result[0][key]:
                        flag = flag & True
                    else:
                        flag = flag & False
                else:
                    raise Exception(\'key_list contains error key\')
        else:
            raise Exception(\'key_list is null\')
        if flag:
            result = \'PASS\'
        else:
            result = \'FAILED\'
        print("result============================={}".format(result))
        return result
    else:
        pass

db  =  config.db
cursor = db.cursor(cursor = pymysql.cursors.DictCursor)

param = PostParameter().post_param(path,"shop","add_shop.json", "case001")
print("param[data]:{}".format(param["data"]))
shop_name = param["data"]["shop_name"]
shop_short_name = param["data"]["shop_short_name"]
shop_phone = param["data"]["shop_phone"]
province = param["data"]["province"]
city = param["data"]["city"]
district = param["data"]["district"]
town = param["data"]["town"]
address = param["data"]["address"]

assert_add_contents(db,cursor,"t_shop_info","id","137",shop_name = shop_name,shop_short_name = shop_short_name,shop_phone = shop_phone,province = province,city = city,district = district,town = town,address = address)

 

以上是关于Python比较字典形式的列表是不是部分相等的主要内容,如果未能解决你的问题,请参考以下文章

python--列表字典元组集合对比

python 比较列表内字符串是不是相等?

比较字典与不可用或不可比的值? (例如列表或数据帧)

Python--比较两个字典部分value是否相等(可以用于接口自动化)

两个布尔列/列表是不是匹配?两个不同大小的列的比较:一个列表的一部分是不是与另一个列表的一部分匹配? (Python)

Python列表,元组,字典,集合的比较总结【表格对比】