如何使用python从csv文件中仅获取具有最大分数的行
我的代码:如何使用python从csv文件中仅获取具有最大分数的行,python,csv,Python,Csv,我的代码: import csv with open('file.csv', 'r') as information: reader = csv.reader(information, delimiter=';') for row in reader: print('Highest score is: {} on {} by {}'.format(row[2], row[1], row[0])) csv文件中的信息: Anton;12-05-2016;29 Douwe Bob;13
import csv
with open('file.csv', 'r') as information:
reader = csv.reader(information, delimiter=';')
for row in reader:
print('Highest score is: {} on {} by {}'.format(row[2], row[1], row[0]))
csv文件中的信息:
Anton;12-05-2016;29
Douwe Bob;13-05-2016;44
Anton;11-05-2016;39
Douwe Bob;12-05-2016;55
Anton;10-05-2016;29
Douwe Bob;11-05-2016;69
当我运行该程序时,我将打印所有没有最大分数的行。我尝试了max(第[2]行),但似乎不起作用,肯定有什么地方我做错了。有人能帮我吗
我只想打印带有最大分数行的行[2]
对于那些开始哭泣的人,我们不会让你的作业远离,我只想提高我的编程技能
def get_score_from_row(row):
return float(row[-1])
max_score_row = max(csv.reader(information, delimiter=';'),key=get_score_from_row)
应该给你一行最高分以下是我的工作方式。我创建了一个新的列表来存储数字,由于行本身就是一个列表,所以访问了数字元素的位置并将其存储到新列表中
import csv
# create a new list to store only the numbers
my_list = []
with open('C:\\Users\\mnickey\\Documents\\names.txt', 'r') as information:
reader = csv.reader(information, delimiter=';')
for row in reader:
# used to assure that the row in the reader is a list
print(type(row))
# assuming that you know where the numbers are in the file
num = row[2]
# append this to the empty list
my_list.append(num)
print(max(my_list))
我希望这有帮助。请注意,它可能不像其他人发布的那样先进或高效,但它应该可以工作。谢谢您,先生。你能解释一下key=lambda是干什么的吗?我以前没学过这个,我改成不用lambda。。。所有sort、max、min等函数都采用一个可选的键参数,该参数定义了一个函数,告诉它如何排序。。。