如何在Python中按航空公司分组计算总CO₂排放量
按航空公司统计总CO₂排放量的代码修改方案
需求与现有基础
- 需求:统计各航空公司的总CO₂排放量
- 现有基础:已将航班数据加载为字典格式,实现了航班信息列出功能,且具备统计航空公司航班数量的基础逻辑
修改方案
方案1:新增独立统计函数
创建专门用于统计CO₂排放量的函数,逻辑清晰且不影响原有功能:
def calculate_airline_co2_total(self): # 初始化字典,键为航空公司标识(flag),值为对应总CO₂排放量 airline_co2_total = {} # 遍历所有航班数据 for flight in self.flights_list.read_data_file(): # 过滤有效航班:必须有起落地信息,且包含CO₂排放量字段 if flight.get('dep_icao') and flight.get('arr_icao') and 'co2_emissions' in flight: airline_flag = flight['flag'] current_co2 = flight['co2_emissions'] # 累加排放量:若航空公司已在字典中则追加,否则初始化为当前值 airline_co2_total[airline_flag] = airline_co2_total.get(airline_flag, 0.0) + current_co2 # 输出统计结果 print("各航空公司总CO₂排放量统计:") for airline, total_co2 in airline_co2_total.items(): print(f"- {airline}: {total_co2:.2f} kg") # 返回统计结果字典,方便后续处理 return airline_co2_total
方案2:修改现有函数,同时保留列航班与统计功能
如果需要在列出航班信息的同时完成统计,可修改原list_all_flights函数:
def list_all_flights(self): total_result = 0 # 初始化CO₂统计字典 airline_co2_total = {} for flight in self.flights_list.read_data_file(): if flight.get('dep_icao') and flight.get('arr_icao'): # 打印航班基础信息 print(f"Flight Number is {flight['flight_number']} and the airline is {flight['flag']} and the aircraft is {flight['aircraft_icao']} going from {flight['dep_icao']} to {flight['arr_icao']}") # 处理CO₂排放量统计 if 'co2_emissions' in flight: current_co2 = flight['co2_emissions'] print(f"Flight CO2 emissions is {current_co2} kg\n") airline_flag = flight['flag'] airline_co2_total[airline_flag] = airline_co2_total.get(airline_flag, 0.0) + current_co2 # 打印最终统计结果 print("\n--- 总统计结果 ---") for airline, total_co2 in airline_co2_total.items(): print(f"航空公司 {airline} 的总CO₂排放量:{total_co2:.2f} kg")
关键说明
- 字段匹配:确保你的JSON数据中包含
co2_emissions字段(对应航班示例中的CO₂数值),若实际字段名不同,需替换代码中的键名(比如co2) - 安全处理:使用
dict.get(key, default)方法避免KeyError,即使航空公司未在字典中也能正常初始化 - 格式优化:用
:.2f格式化输出结果,保留两位小数,提升可读性
内容的提问来源于stack exchange,提问作者Bloober
相关产品推荐
相关产品推荐

