WMX · 随记
·Python· 3 分钟阅读

集合差集:从两份快照找新增与删除

同步两批唯一 ID 时,逐项嵌套比较既冗长又容易漏掉重复值。集合可以直接表达新增、删除和共有项。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

Python Tutorial for Beginners

Python 入门课程作为语法与编程背景复习;本文使用的较新标准库特性不保证在该课程中逐项覆盖。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

Python 系列概览:输入校验、数据处理与行为验证
Python 系列概览:输入校验、数据处理与行为验证 点击图片查看大图 ↗

问题从哪里出现

同步两批唯一 ID 时,逐项嵌套比较既冗长又容易漏掉重复值。集合可以直接表达新增、删除和共有项。

理解核心机制

new - old 是新增,old - new 是删除,交集表示两批都存在的成员。集合会丢弃重复次数和输入顺序,因此先判断这两种信息是否属于业务需求。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。

Python6 行 · 可横向滚动
old = {"a", "b", "c"}
new = {"b", "c", "d"}
added, removed = new - old, old - new
assert added == {"d"} and removed == {"a"}
print("added:", sorted(added))
print("removed:", sorted(removed))

适用边界与常见误区

成员必须可哈希。用整个可变字典表示记录时,应先提取稳定键;若同一 ID 内容变化,还需要另行比较字段,交集并不能证明记录未变。

继续练习

给相同 ID 增加版本字段,区分新增、删除和更新。若需要比较商品数量,改用 Counter 再讨论差异。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档