多列数组双条件匹配计数:重复项仅统计一次
解决方案:统计符合条件的唯一标识数量
没问题,我帮你搞定这个统计需求!核心思路就是先筛选符合条件的条目,再对标识去重,最后统计去重后的数量,下面给你具体的实现示例:
核心逻辑拆解
- 第一步:筛选出同时满足两个条件的条目:
- B列(状态)为「生产状态」
- 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
注意事项
- 如果你的数据是纯二维数组(比如
[[111, "生产中", ""], ...]),只需要把字段获取方式改成索引即可,比如Python里的item[1]对应B列,item[2]对应C列 - 注意空值的判断:如果C列的空是
null/undefined(而不是空字符串),需要调整判断条件,比如JavaScript里用!item.产品,Python里用item["产品"] is None or item["产品"] == "" - 先筛选再去重的效率更高,因为可以减少后续去重处理的条目数量
内容的提问来源于stack exchange,提问作者Groot
相关产品推荐
相关产品推荐

