跳到主要内容

两份列表怎么比对:交集、只在A、只在B 一次看清

把两份名单逐行比对,分成只在A、只在B、两者都有和合并去重四组,核对新增删除项、查名单、对账都靠它,带忽略大小写选项,全程浏览器本地处理。

发布于 作者 李雷
#列表对比 #两列表比较 #名单核对 #集合运算

两份列表怎么比对:交集、只在A、只在B 一次看清

经常有人把「列表对比」想成把两段文字摆一起看红绿差异,其实多数对账场景要的不是逐字符 diff,而是按行做集合运算。手里有两份名单,你真正想知道的是:谁两边都在、谁只在这份、谁只在那份。这三类一旦分清,新增了什么、删掉了什么就一目了然。

列表对比到底在算什么

把每份列表看成一个集合,每行是一个成员,比对就落到三类划分上。

  • 交集(两者都有):两份列表里都出现的项。比如核对参会名单和签到名单,交集就是又报名又到场的人。
  • 只在 A:出现在 A 却不在 B 的项,数学上是差集 A 减 B。它回答的是「这边有、那边没有」。
  • 只在 B:反过来,出现在 B 却不在 A 的项,也就是差集 B 减 A。

再加上一个合并去重(并集),把两份列表拼起来、去掉重复,就得到一份干净的总名单。这四组覆盖了对账里几乎所有问法。要点是:这是按行的成员关系,顺序无所谓,同一项在一份里出现两次也只算一个成员,和逐字符 diff 完全是两回事。

一个真实例子:比出新增和删除项

假设你管一个项目群,上周的成员名单 A 是:

张伟
李娜
王芳
刘洋

这周的名单 B 变成:

李娜
王芳
刘洋
陈静

把 A 粘左边、B 粘右边,结果立刻分好:

  • 两者都有:李娜、王芳、刘洋,这三人一直在群里。
  • 只在 A:张伟。上周在、这周不在,也就是这周被移除的人。
  • 只在 B:陈静。上周没有、这周才出现,也就是这周新增的人。
  • 合并去重:张伟、李娜、王芳、刘洋、陈静,五个人,没有重复。

一眼就读出来:本周减一人(张伟),加一人(陈静)。换成订单号、用户 ID、货号也是同一套逻辑,谁新增谁消失全在「只在 A」和「只在 B」两栏里。这就是我平时对账最常用的读法,先看这两栏,变动量直接到手。

按行比较与忽略大小写

匹配的颗粒度是「一整行」,所以行内有个小错别字,这一行就被当成一个全新的项,不会像 diff 那样标成「修改」。这也是为什么把它当字符 diff 用会失望:它做的是集合,不是逐字标注。

大小写是最容易踩的坑。两份来源如果一个写 Gmail.com、一个写 gmail.com,默认它们算两个不同的项,会被拆到「只在 A」和「只在 B」,交集里反而看不到,重合度被悄悄少算。打开忽略大小写,它们就会被认成同一项,落进交集。但大小写本身有意义时别开,比如区分大小写的密码、Linux 文件路径,或者 Total 和 total 确实不同的程序标识符。

另外两个常被忽略的开关同样实用:去首尾空白能把复制粘贴带进来的行尾空格抹掉,免得「李娜」和「李娜 」匹配不上;跳过空行能让中间的空行不被当成一个共有项。处理命令输出、表格导出这类不太干净的数据时,这两个开关基本要常开。

这些场景都能用

  • 名单核对:报名表对签到表、白名单对实际授权、批准名单对当前权限,「只在 A」和「只在 B」直接就是缺口报告,能复制贴进工单。
  • 表格两列对账:从表里复制一列货号或订单号当 A,把昨天那列当 B,不用 VLOOKUP、不用公式,新增和消失的行立刻分出来。
  • 两台机器的依赖比对:两个环境各跑一遍包列表粘进来,「只在 A」是这边装了那边没有的,「两者都有」是共同基线。
  • 新旧导出去重合并:两份订阅者名单求并集去重,得到一份没有重复的干净总名单。

整套流程全部在浏览器本地用 JavaScript 跑,粘进去的内容不上传、不记录,拿来比客户邮箱、内部用户 ID 这类敏感名单也放心。要注意的是分享链接会把两份列表编码进网址,涉及保密名单时用复制按钮贴结果,别直接发链接。

想动手就用 列表对比工具,两份列表粘进去四组结果即时出。如果你的两份数据各自内部还有不少重复想先清一遍,可以先过一道 文本去重工具,把每份列表自己的重复行去掉,再来对比,结果会更干净。


Made by Toolora · Updated 2026-06-13