Python实现从两个变量中全量匹配/不匹配字符串的需求
解决方案:对比两个AP数据库的匹配与不匹配条目
我来帮你搞定这个问题——要对比两个AP数据库列表里的条目,找出匹配和不匹配的Name字段,完全不需要局限于索引访问,我们可以通过遍历所有条目来实现全量检查。以下是完整的Python实现方案:
步骤1:定义完整输入数据
先补全你提供的截断数据(如果实际apdb1的内容不同,直接替换即可):
apdb = { "AP Database": [ {"AP Type": "110H", "Name": "varagu"}, {"AP Type": "110H", "Name": "thinai"}, {"AP Type": "110H", "Name": "kambu"}, {"AP Type": "205H", "Name": "keppai"} ] } apdb1 = { "AP Database": [ {"AP Type": "110H", "Name": "kudhiravali"}, {"AP Type": "110H", "Name": "kambu"}, {"AP Type": "205H", "Name": "ragi"} # 补全截断的示例内容 ] }
步骤2:提取并对比Name字段
先提取两个数据库里所有的Name值,再通过集合操作快速筛选匹配和不匹配的内容:
# 提取两个数据库的Name列表 apdb_names = [entry["Name"] for entry in apdb["AP Database"]] apdb1_names = [entry["Name"] for entry in apdb1["AP Database"]] # 找出两个数据库都存在的Name(匹配项) matching_names = set(apdb_names) & set(apdb1_names) # 找出仅在apdb中存在的Name only_in_apdb = set(apdb_names) - set(apdb1_names) # 找出仅在apdb1中存在的Name only_in_apdb1 = set(apdb1_names) - set(apdb_names)
步骤3:获取完整的匹配/不匹配条目
如果需要关联对应的AP Type等完整信息,可以进一步筛选出完整条目:
# 获取apdb中匹配的完整条目 matching_apdb_entries = [entry for entry in apdb["AP Database"] if entry["Name"] in matching_names] # 获取apdb1中匹配的完整条目 matching_apdb1_entries = [entry for entry in apdb1["AP Database"] if entry["Name"] in matching_names] # 获取apdb中不匹配的完整条目 unmatched_apdb_entries = [entry for entry in apdb["AP Database"] if entry["Name"] in only_in_apdb] # 获取apdb1中不匹配的完整条目 unmatched_apdb1_entries = [entry for entry in apdb1["AP Database"] if entry["Name"] in only_in_apdb1]
步骤4:输出结果
最后打印所有结果,清晰展示匹配与不匹配的内容:
print("=== 匹配的Name ===") print(matching_names) print("\n=== 匹配的完整条目(apdb) ===") for entry in matching_apdb_entries: print(entry) print("\n=== 仅在apdb中存在的条目 ===") for entry in unmatched_apdb_entries: print(entry) print("\n=== 仅在apdb1中存在的条目 ===") for entry in unmatched_apdb1_entries: print(entry)
示例输出
运行上述代码后,会得到类似这样的结果:
=== 匹配的Name === {'kambu'} === 匹配的完整条目(apdb) === {'AP Type': '110H', 'Name': 'kambu'} === 仅在apdb中存在的条目 === {'AP Type': '110H', 'Name': 'varagu'} {'AP Type': '110H', 'Name': 'thinai'} {'AP Type': '205H', 'Name': 'keppai'} === 仅在apdb1中存在的条目 === {'AP Type': '110H', 'Name': 'kudhiravali'} {'AP Type': '205H', 'Name': 'ragi'}
这个方案的优势是不依赖条目索引位置,能全量检查所有内容,哪怕两个数据库列表的长度不一致也能正常工作。
内容的提问来源于stack exchange,提问作者selvam samymuthu
相关产品推荐
相关产品推荐

