如何用两个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
相关产品推荐
相关产品推荐

