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

如何编写filter函数,仅返回所有Type均为'b'的唯一ID?

编写筛选函数:仅保留所有Type字段均为'b'的唯一ID

需求说明

实现筛选逻辑,从ID-Type关联数据中,仅提取那些**所有对应Type字段值全为'b'**的唯一ID。

示例数据

IDType
124a
124b
125a
125a
125b
126b
126b
126b
126b
127b
127a

预期结果

126

实现思路与代码示例

核心逻辑

  1. 按ID分组,收集每个ID对应的所有Type值
  2. 检查每组的Type集合中是否不包含除'b'之外的其他值
  3. 保留符合条件的ID

Python代码实现

def filter_ids(data):
    # 按ID分组,存储每个ID对应的所有Type(用集合去重)
    id_type_groups = {}
    for item in data:
        current_id = item['ID']
        current_type = item['Type']
        if current_id not in id_type_groups:
            id_type_groups[current_id] = set()
        id_type_groups[current_id].add(current_type)
    
    # 筛选出Type仅包含'b'的ID
    valid_ids = [id_val for id_val, types in id_type_groups.items() if types == {'b'}]
    # 返回结果,若有多个符合条件的ID会返回列表,这里示例仅一个
    return valid_ids[0] if valid_ids else None

# 示例数据格式转换
sample_data = [
    {'ID': 124, 'Type': 'a'},
    {'ID': 124, 'Type': 'b'},
    {'ID': 125, 'Type': 'a'},
    {'ID': 125, 'Type': 'a'},
    {'ID': 125, 'Type': 'b'},
    {'ID': 126, 'Type': 'b'},
    {'ID': 126, 'Type': 'b'},
    {'ID': 126, 'Type': 'b'},
    {'ID': 126, 'Type': 'b'},
    {'ID': 127, 'Type': 'b'},
    {'ID': 127, 'Type': 'a'},
]

# 调用并输出结果
print(filter_ids(sample_data))  # 输出:126

逻辑说明

  • 用字典分组存储每个ID对应的Type集合,利用集合自动去重的特性,减少重复判断
  • 通过判断集合是否等于{'b'},确保该ID的所有Type值都是'b',没有其他类型混入
  • 若没有符合条件的ID,函数会返回None,兼容空结果场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:11:09