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

多列数组双条件匹配计数:重复项仅统计一次

解决方案:统计符合条件的唯一标识数量

没问题,我帮你搞定这个统计需求!核心思路就是先筛选符合条件的条目,再对标识去重,最后统计去重后的数量,下面给你具体的实现示例:

核心逻辑拆解

  • 第一步:筛选出同时满足两个条件的条目:
    1. B列(状态)为「生产状态」
    2. C列(产品)为空
  • 第二步:提取这些条目的标识字段,用集合自动去重(集合天然不允许重复值)
  • 第三步:统计去重后的标识总数

Python 实现示例

假设你的数组是字典格式的(如果是二维列表,只需要调整字段索引即可):

# 模拟你的数据(示例)
data = [
    {"标识": 111, "状态": "生产中", "产品": ""},
    {"标识": 111, "状态": "生产中", "产品": ""},
    {"标识": 222, "状态": "已停产", "产品": ""},
    {"标识": 333, "状态": "生产中", "产品": ""},
    {"标识": 444, "状态": "生产中", "产品": "手机"},
]

def count_unique_valid_ids(data):
    # 筛选符合条件的条目
    valid_entries = [item for item in data if item["状态"] == "生产中" and item["产品"] == ""]
    # 提取标识并去重(集合自动去重)
    unique_ids = {entry["标识"] for entry in valid_entries}
    # 返回去重后的数量
    return len(unique_ids)

# 测试调用
print(count_unique_valid_ids(data))  # 输出:2

JavaScript 实现示例

如果是前端场景,用JavaScript的实现方式:

// 模拟你的数据(示例)
const data = [
    {标识: 111, 状态: '生产中', 产品: ''},
    {标识: 111, 状态: '生产中', 产品: ''},
    {标识: 222, 状态: '已停产', 产品: ''},
    {标识: 333, 状态: '生产中', 产品: ''},
    {标识: 444, 状态: '生产中', 产品: '手机'},
];

function countUniqueValidIds(data) {
    // 筛选符合条件的项
    const validEntries = data.filter(item => item.状态 === '生产中' && item.产品 === '');
    // 用Set去重标识
    const uniqueIds = new Set(validEntries.map(item => item.标识));
    // 返回数量
    return uniqueIds.size;
}

// 测试调用
console.log(countUniqueValidIds(data)); // 输出:2

注意事项

  1. 如果你的数据是纯二维数组(比如[[111, "生产中", ""], ...]),只需要把字段获取方式改成索引即可,比如Python里的item[1]对应B列,item[2]对应C列
  2. 注意空值的判断:如果C列的空是null/undefined(而不是空字符串),需要调整判断条件,比如JavaScript里用!item.产品,Python里用item["产品"] is None or item["产品"] == ""
  3. 先筛选再去重的效率更高,因为可以减少后续去重处理的条目数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:52:35