You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python对比两组字典tin值差异 输出第二组独有值的方法

字典数据tin字段差集计算方案

问题1:适配对比操作的初始数据存储方式

  • 只做tin字段差集计算的场景,直接把两组数据的tin值抽出来存成Python的set(集合)就行。集合的成员判断、差集运算都是原生优化过的,比遍历列表逐行匹配快得多,数据量上去之后性能差距特别明显。
  • 要是后续还要根据tin关联查询对应的Amount之类的其他字段,原始字典列表可以保留,也可以直接处理成{tin值: 对应完整字典}的键值对结构,单条数据查询也是O(1)复杂度,用着更方便。

问题2:提取第二组存在、第一组不存在的tin值

直接用集合做成员判断就能实现单向差集计算,不需要做反向对比,参考实现代码如下:

# 第一组原始数据
data1 = [
    {'tin': '00194500874886', 'Amount': 'LOW'},
    {'tin': '00523523523574', 'Amount': 'MEDIUM'},
    {'tin': '56756756536745', 'Amount': 'NONE'},
    {'tin': '00194523575674', 'Amount': 'HIGH'},
    {'tin': '51245354536734', 'Amount': 'LOW'}
]

# 第二组原始数据
data2 = [
    {'tin': '00194500874886', 'Amount': 'LOW'},
    {'tin': '07867867867865', 'Amount': 'MEDIUM'},
    {'tin': '55675675756756', 'Amount': 'NONE'}
]

# 提取第一组所有tin值构建查询集合
tin_set1 = {item['tin'] for item in data1}
# 筛选第二组中不在第一组集合内的tin值
diff_result = {item['tin'] for item in data2 if item['tin'] not in tin_set1}

print(diff_result)

代码运行后输出结果完全匹配需求:

{'07867867867865', '55675675756756'}

小提示:十万条以上数据量级下,这个集合方案比手写两层for循环逐行对比快百倍以上,不需要依赖任何第三方库,原生Python环境直接就能跑。

内容的提问来源于stack exchange,提问作者PythonNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:01:40