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

Python比对含重复元素的两个数组求差集结果异常如何解决

问题原因

set 结构仅会记录元素是否存在,自动忽略重复元素的出现次数,因此你将包含两个 "b" 的数组 x 转为 set 时,重复的 "b" 会被去重仅保留1个,和 y 转换后的 set 结构完全一致,差集运算结果自然为空。

解决方案

方法1:使用内置模块 collections.Counter(推荐)

Counter 是自带计数功能的容器,会保留每个元素的出现次数,做差集运算时会自动统计同元素的次数差值,仅保留次数大于0的元素:

from collections import Counter

x = ["a","b","b"]
y = ["a","b"]

# 计算计数差后展开为列表
diff = list((Counter(x) - Counter(y)).elements())
print(diff) # 输出:['b']

方法2:手动实现计数逻辑

如果不想引入额外模块,可以自行统计第二个数组的元素出现次数,再遍历第一个数组筛选符合要求的元素:

x = ["a","b","b"]
y = ["a","b"]

# 统计y中各元素的出现次数
count_y = {}
for item in y:
    count_y[item] = count_y.get(item, 0) + 1

diff = []
for item in x:
    if count_y.get(item, 0) > 0:
        count_y[item] -= 1
    else:
        diff.append(item)

print(diff) # 输出:['b']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:04