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

Python实现:从CSV文件中找出体重最大者的姓名(禁用Pandas)

问题:从CSV文件中找出体重最大值对应的姓名(不使用Pandas)

我是Python新手,有一个代码问题(且不允许使用Pandas)。我有一个名为personal_info.csv的CSV文件,包含full_name、weight_kg、height_m列。我想要编写一个函数,找出weight_kg列中的最大值,并返回对应的姓名(姓名为字符串类型,体重为浮点型)。

目前我只写出了以下代码,但不知道如何定位CSV文件的指定列,以及如何找到对应的姓名:

for number in heights:
    if number > largest_number:
        largest_number = number

print(largest_number)

我还看到了这段代码,但不知道如何将其应用到我的问题中:

def max_employment(countries, employment):
    max_value_index = np.argmax(employment)
    max_value = employment[max_value_index]
    max_country = countries[max_value_index]

    return (max_country, max_value)

解决方案

用Python标准库csv就能处理,核心思路是逐行读取CSV,同时实时记录当前最大体重和对应的姓名,不用把整个文件加载到内存里。

完整代码示例:

import csv

def find_heaviest_person(csv_file_path):
    max_weight = -float('inf')  # 初始设为负无穷,确保第一个体重能覆盖它
    heaviest_name = ""
    
    with open(csv_file_path, mode='r', encoding='utf-8') as file:
        # DictReader可以直接通过列名获取对应值,不用手动处理索引
        reader = csv.DictReader(file)
        
        for row in reader:
            # 把字符串类型的体重转为浮点型
            current_weight = float(row['weight_kg'])
            current_name = row['full_name']
            
            if current_weight > max_weight:
                max_weight = current_weight
                heaviest_name = current_name
    
    return (heaviest_name, max_weight)

# 调用函数示例
name, weight = find_heaviest_person('personal_info.csv')
print(f"体重最大的人是:{name},体重为{weight}kg")

代码说明

  • csv.DictReader会自动把首行作为列名,后续每行数据都可以通过列名(比如row['full_name'])直接访问,不用自己数索引位置。
  • 初始化max_weight为负无穷,是为了兼容所有可能的体重数值(哪怕是负数场景),保证第一个读取到的体重能正确替换初始值。
  • 逐行遍历的方式更适合大文件,不会占用过多内存。

关于你参考的代码

那段用np.argmax的代码是基于NumPy数组的实现逻辑,如果你不想依赖NumPy,上面的纯Python方案更直接。如果一定要套用类似思路,可以先把姓名和体重分别存入列表,再找最大值索引,但这种方式需要先把整个文件读进内存,适合小文件:

import csv

def find_heaviest_person_with_lists(csv_file_path):
    names = []
    weights = []
    
    with open(csv_file_path, mode='r', encoding='utf-8') as file:
        reader = csv.DictReader(file)
        for row in reader:
            names.append(row['full_name'])
            weights.append(float(row['weight_kg']))
    
    max_weight = max(weights)
    max_index = weights.index(max_weight)
    return (names[max_index], max_weight)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:45:34