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

不使用pandas按条件合并两个字典列表并新增predict_labels字段

纯Python实现指定条件合并两个字典列表(无需pandas)

实现核心逻辑:不需要引入pandas等第三方库,基于原生Python语法按照给定3个条件完成匹配,将x2的predict_labels字段补充到x1对应元素中。

注意匹配细节:x1的fact_group为字符串类型,x2的group为浮点数类型,匹配前需要统一数据类型,否则会出现匹配失败的问题。

实现代码

# 第一步:预处理x2构建分组规则索引,大幅提升后续匹配效率,适合x2数据量较大的场景
group_rule_map = {}
for rule in x2:
    # 将group转为字符串和x1的fact_group类型对齐
    group_key = str(rule['group'])
    if group_key not in group_rule_map:
        group_rule_map[group_key] = []
    group_rule_map[group_key].append(rule)

# 第二步:遍历x1匹配规则生成结果
x3 = []
for item in x1:
    # 复制原字典避免修改x1原始数据
    new_item = item.copy()
    fact_group = item['fact_group']
    prob = item['probability']
    # 读取对应分组的所有区间规则
    rules = group_rule_map.get(fact_group, [])
    for rule in rules:
        # 匹配区间条件
        if rule['predict_intervals_min'] <= prob < rule['predict_intervals_max']:
            new_item['predict_labels'] = rule['predict_labels']
            break
    x3.append(new_item)

输出结果

[
    {'id': '94ffe1d6-0afa-11ec-b139-4cd98f4d62e3', 'fact_group': '0.05', 'probability': 0.2, 'predict_labels': 0},
    {'id': '86ae0229-0af8-11ec-be8c-4cd98f847094', 'fact_group': '0.05', 'probability': 0.56, 'predict_labels': 0},
    {'id': '867ef7ac-0af8-11ec-be8c-4cd98f847094', 'fact_group': '0.2', 'probability': 0.31, 'predict_labels': 2},
    {'id': '211bc00c-0af6-11ec-b139-4cd98f4d62e3', 'fact_group': '0.2', 'probability': 0.96, 'predict_labels': 3}
]

注:你给出的预期结果示例中存在重复predict_labels字段属于输入笔误,上述结果为符合匹配规则的正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:06:03