如何返回值最大的人的名字



我是python新手,对这段代码有一个问题(我不允许使用pandas)。我有一个CSV文件(称为personal_info.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)

我建议在您的largest_number查找算法中使用enumerate(或range)。Enumerate(或range)将为您提供项目的索引,一旦找到更大的数字,您也可以保存该索引。也就是说,您需要存储两个值:最大值和最大值的索引。然后,索引处的名称就是您要查找的名称。

这个页面很好地描述了枚举、范围和索引背后的原因:

https://realpython.com/python-enumerate/

一旦你掌握了这个,你可以尝试更多的方法,比如用键(名称)和值创建一个字典,使用max函数或使用numpy库。然而,所有这些都导致了如上所述的相同逻辑。

假设您有这样一个csv文件:

Name,Wt,Ht
Bob,50.5,60.1
Carol,49.2,55.2
Ted,51.1,59.9
Alice,48.2,54.33

您可以使用csv模块读取文件:

import csv 
with open(fn) as f:
reader=csv.reader(f)
header=next(reader)
data=[[row[0]]+list(map(float, row[1:])) for row in reader]

结果:

>>> data
[['Bob', 50.5, 60.1], ['Carol', 49.2, 55.2], ['Ted', 51.1, 59.9], ['Alice', 48.2, 54.33]]

然后你可以使用max函数和一个键函数获得一些值:

>>> max(data, key=lambda row: row[1])
['Ted', 51.1, 59.9]

您可以使用header中的头值来获取csv数据中列的索引:

>>> max(data, key=lambda row: row[header.index('Wt')])
# same row

如果只需要名称,则下标:

>>> max(data, key=lambda row: row[1])[0]
'Ted'

最新更新