我是python的新手,我真的很难解决这个问题。我有一个csv文件,有不同的列,标记为“height”“weight”“full_name”等。我试图创建一个函数,它将遍历full_name列并返回最长的名称。(因此,如果文件夹中最长的名称是Rachel Smith,我将尝试返回该值。)
下面是迄今为止运行得最好的代码:
import csv
file = "personal_data.csv"
f = open(file)
reader = csv.reader(f, delimiter=",")
col_index = next(reader).index('full_name')
highest = max(rec[col_index] for rec in reader)
print(highest) #using this statement to test if it works
f.close()
我想它不起作用了,因为它只打印了瑞秋,而不是她的全名,瑞秋·史密斯。
2条答案
按热度按时间i5desfxk1#
您可以尝试在
max()
函数中使用key=
参数:f0brbegy2#
使用
csv.DictReader
可以消除查找full_name列索引的需要。使用max()
的key
参数可以使其返回值而不是值的长度。字符串
如果文件足够大,需要考虑内存使用情况,则使用
map()
和itemgetter()
获取名称,并将其作为可迭代参数传递给max()
。打包成函数: