在工作中遇到有两个字典形式的列表list1、list2
list1 = [{"ID":"vat_invoice_type","value":"非电子发票","confidence":1.0,"position":""},
{"ID":"vat_invoice_page_number","value":"发票联","confidence":0.97,"position":""},
{"ID":"vat_invoice_cipher_field","value":"test1","confidence":0.98,"position":""},
{"ID":"vat_invoice_drawer","value":"巧","confidence":0.95,"position":""}]
list2 = [{"value":"非电子发票","description":"发票类型","position":[],"ID":"vat_invoice_type"},
{"value":"发票联","description":"发票联","position":[1433],"ID":"vat_invoice_page_number"},
{"value":"test2","description":"密码区","position":[1020],"ID":"vat_invoice_cipher_field"}]
需求是当两个列表有共同ID时,比较对应value的值是否相等
1、首先找到共同ID
list1_keys = []
list2_keys = []
# 提取list1所有ID的值
for i in list1:
key = i["ID"]
list1_keys.append(key)
print(list1_keys)
# 提取list2所有ID的值
for i in list2:
key = i["ID"]
list2_keys.append(key)
print(list2_keys)
# 提取list1、list2的共同ID
common_keys = [x for x in list1_keys if x in list2_keys]
print(common_keys)
运行后提取到的共同ID结果:
['vat_invoice_type', 'vat_invoice_page_number', 'vat_invoice_cipher_field']
2、循环,根据共同ID查找字典中对应value的值
# 比较共同ID对应字典中value的值是否相等
for i in common_keys:
for dict1 in list1:
if dict1["ID"] == i:
list1_value = dict1["value"]
break
for dict2 in list2:
if dict2["ID"] == i:
list2_value = dict2["value"]
break
if list1_value == list2_value:
print("该ID %s对应的value %s %s 相等" % (i,list1_value,list2_value))
else:
print("该ID %s对应的value %s %s不相等" % (i,list1_value,list2_value))
运行结果:
该ID vat_invoice_type对应的value 非电子发票 非电子发票 相等
该ID vat_invoice_page_number对应的value 发票联 发票联 相等
该ID vat_invoice_cipher_field对应的value test1 test2不相等
网友评论