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

如何用两个Python字典实现循环、查找与求和以搭建排放计算器?

固定式燃料排放计算器:遍历字典实现求和

我正在搭建一个简易排放计算器,已将固定式燃料消耗排放因子存入ef_stationary字典,三个燃烧源的使用数据存入warehouse字典。需要遍历这三个燃烧源,将每个源对应的排放因子与燃料消耗量相乘,最终求和得到总排放量。示例的最终结果应为:1200*70.62 + 2200*61.15 + 800*49.87 = 259170。

我知道可以通过ef_stationary['Propane']获取丙烷的排放因子,通过warehouse["forklift"]["quantity"]获取丙烷的使用量,但不清楚如何将两者结合到循环中完成求和。查询了一些Python字典循环求和的相关内容,均未贴合当前需求。

原始代码

ef_stationary = {
    "Natural Gas": 49.87,
    "Propane": 61.15,
    "Light Fuel Oil": 68.37,
    "Heavy Fuel Oil": 74.74,
    "Kerosene": 68.20,
    "Diesel Fuel": 70.62,
    "Marine Diesel": 68.16,
    "Gasoline": 65.22
}

warehouse = {
    "generator" : {
        "fuel" : "Diesel Fuel",
        "quantity" : 1200
    },
    "forklift" : {
        "fuel" : "Propane",
        "quantity" : 2200
    },
    "furnace" : {
        "fuel" : "Natural Gas",
        "quantity" : 800
    }
}

解决方案

方法1:循环累加

通过遍历warehouse的每个燃烧源数据,提取燃料类型和使用量,匹配对应排放因子后计算并累加:

total_emissions = 0
# 遍历所有燃烧源的详细数据
for source in warehouse.values():
    fuel = source["fuel"]
    qty = source["quantity"]
    # 计算单源排放量并累加到总和
    total_emissions += ef_stationary[fuel] * qty

print(total_emissions)  # 输出:259170.0

方法2:生成器表达式简洁求和

利用Python内置的sum()函数结合生成器表达式,一行代码完成求和,更简洁高效:

total_emissions = sum(ef_stationary[src["fuel"]] * src["quantity"] for src in warehouse.values())
print(total_emissions)  # 输出:259170.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:53:21