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

如何遍历嵌套字典计算各行程折扣得分并存储为字典

问题描述

现有三个嵌套字典,分别存储不同行程的各项数据:

A = {'tr_1': {'hos': 100.0, 'dy': 100.0}, 'tr_2': {'hos': 100.0, 'dy': 50.0}, 'tr_3': {'hos': 100.0, 'dy': 50.0}}
B = {'tr_1': {'cor': 160, 'ner': 0}, 'tr_2': {'cor': 69, 'ner': 36.14}, 'tr_3': {'cor': 63, 'ner': 41.69}}
C = {'tr_1': {'st': 0, 'st_c': 100.0}, 'tr_2': {'st': 1368, 'st_c': 0}, 'tr_3': {'st': 1366, 'st_c': 0}}

已有针对单个行程的得分计算逻辑(简化版):

dis = {}
A_single = {'dy':18}
B_single = {'ner':89}
C_single = {'st_c':56}
eff = (20 * A_single['dy']) + (20 * B_single['ner']) + (20 * C_single['st_c'])
dis['value'] = eff

需要对每个行程(tr_1、tr_2、tr_3)执行相同的得分计算,最终生成如下格式的结果字典:

dis = {'tr_1': {'eff':32},'tr_2': {'eff':45},'tr_3': {'eff':23}}
实现方案

直接遍历所有行程ID,依次取出每个行程在三个字典中的对应字段,代入公式计算后存入结果字典即可:

# 原始数据字典(统一第三个字典变量名为大写C,避免命名混乱)
A = {'tr_1': {'hos': 100.0, 'dy': 100.0}, 'tr_2': {'hos': 100.0, 'dy': 50.0}, 'tr_3': {'hos': 100.0, 'dy': 50.0}}
B = {'tr_1': {'cor': 160, 'ner': 0}, 'tr_2': {'cor': 69, 'ner': 36.14}, 'tr_3': {'cor': 63, 'ner': 41.69}}
C = {'tr_1': {'st': 0, 'st_c': 100.0}, 'tr_2': {'st': 1368, 'st_c': 0}, 'tr_3': {'st': 1366, 'st_c': 0}}

dis = {}
# 遍历所有行程ID(假设三个字典的行程ID完全一致,直接从A的键中获取)
for trip_id in A:
    # 提取当前行程的目标字段值
    dy_val = A[trip_id]['dy']
    ner_val = B[trip_id]['ner']
    st_c_val = C[trip_id]['st_c']
    # 代入得分公式计算(可简化为提取公因子20的写法)
    eff_score = 20 * (dy_val + ner_val + st_c_val)
    # 将结果存入目标字典
    dis[trip_id] = {'eff': eff_score}

# 验证结果
print(dis)

补充说明

  • 如果三个字典的行程ID存在不一致的情况,可以用set(A.keys()) | set(B.keys()) | set(C.keys())获取所有行程ID的并集来遍历,避免遗漏。
  • 简化后的公式20 * (dy_val + ner_val + st_c_val)和原逻辑计算结果完全一致,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:25:26