如何使用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等函数都采用一个可选的键参数,该参数定义了一个函数,告诉它如何排序。。。