如何从嵌套列表中获取两个值?CSV读取场景技术问询
嘿,你已经把CSV数据成功解析成嵌套列表了,这步做得很到位!要从中提取两个值的话,得看你具体想要哪类数据,我给你梳理几个最常用的场景,你可以按需参考:
场景1:获取指定学生的两门考试成绩
比如你想提取Paulo的G1和G2成绩,可以通过遍历列表匹配学生姓名,再提取对应位置的分数(记得把字符串转成数值类型,方便后续计算):
# 你的嵌套列表数据 student_data = [['NOME', 'G1', 'G2'], ['Paulo', '5.0', '7.2'], ['Pedro', '6', '4.1'], ['Ana', '3.3', '2.3'], ['Thereza', '5', '6.5'], ['Roberto', '7', '5.2'], ['Matheus', '6.3', '6.1']] # 提取Paulo的G1和G2成绩 for row in student_data[1:]: # 跳过表头行 if row[0] == 'Paulo': paulo_g1 = float(row[1]) paulo_g2 = float(row[2]) print(f"Paulo的G1成绩:{paulo_g1},G2成绩:{paulo_g2}") break
运行后会输出:Paulo的G1成绩:5.0,G2成绩:7.2
场景2:获取某一科目的最高分和最低分
如果你想拿到G1科目的最高分和最低分,可以先提取所有G1的分数,再用max()和min()函数计算:
# 提取所有G1成绩(跳过表头) g1_scores = [float(row[1]) for row in student_data[1:]] # 计算最高分和最低分 g1_highest = max(g1_scores) g1_lowest = min(g1_scores) print(f"G1科目最高分:{g1_highest},最低分:{g1_lowest}") # 同理提取G2的最高分和最低分 g2_scores = [float(row[2]) for row in student_data[1:]] g2_highest = max(g2_scores) g2_lowest = min(g2_scores) print(f"G2科目最高分:{g2_highest},最低分:{g2_lowest}")
运行后会输出:
G1科目最高分:7.0,最低分:3.3 G2科目最高分:7.2,最低分:2.3
场景3:获取两门科目的平均分
如果需要统计G1和G2的平均分,可以用生成器表达式计算总分,再除以学生人数:
student_count = len(student_data[1:]) # 计算G1平均分 g1_average = sum(float(row[1]) for row in student_data[1:]) / student_count # 计算G2平均分 g2_average = sum(float(row[2]) for row in student_data[1:]) / student_count # 保留两位小数输出 print(f"G1平均分:{round(g1_average, 2)},G2平均分:{round(g2_average, 2)}")
运行后会输出:G1平均分:5.43,G2平均分:5.23
内容的提问来源于stack exchange,提问作者Mat Crisanto
相关产品推荐
相关产品推荐

