如何在Python函数中从CSV文件返回带统计信息的多值(字符串+数值)
获取最低销售额对应月份的Python解决方案
你当前的代码只单独收集了销售额数值,丢失了和月份的关联,所以没法同时拿到最低销售额对应的月份。这里给你两种实用的修改思路:
方法一:绑定销售额与月份后找最小值
直接把每个销售额和对应的月份打包成元组存入列表,利用Python元组的比较特性快速找到最小值:
header = ["year", "month", "sales", "expenditure"] def run(): data = read_data() sales_with_month = [] for row in data: sale = int(row["sales"]) # 将销售额(数值)和月份(字符串)组成元组,存入列表 sales_with_month.append( (sale, row["month"]) ) # min()函数会优先比较元组的第一个元素(销售额),返回最小的那个元组 min_sale, min_month = min(sales_with_month) print(f"最低销售额为{min_sale},对应月份:{min_month}") run()
方法二:遍历过程中实时跟踪最小值
如果CSV文件数据量较大,这种方法无需存储所有数据,内存占用更小:
header = ["year", "month", "sales", "expenditure"] def run(): data = read_data() # 初始化最小值为一个极大值,确保第一个销售额能替换它 min_sale = float('inf') min_month = "" for row in data: current_sale = int(row["sales"]) current_month = row["month"] # 每次比较当前销售额与记录的最小值,更新数据 if current_sale < min_sale: min_sale = current_sale min_month = current_month print(f"最低销售额为{min_sale},对应月份:{min_month}") run()
注意:确保read_data()函数返回的是可遍历的字典列表(比如用csv.DictReader读取CSV文件的结果),这样才能通过row["month"]和row["sales"]获取对应字段。
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

