编写一个脚本high_scores.py,它将读取用户分数的CSV文件并显示每个人的最高分。您将读取的文件名为scores.csv。您应该将高分存储为值在字典中使用关联的名称作为字典键。这边,当你读进去的时候对于每一行数据,如果该名称在字典中已经有一个与之相关的分数,则可以比较这两个分数并决定是否替换"当前"。高在字典里查分数。在字典的键上使用sorted()函数来显示排序列表高分,应该匹配以下输出:
Empiro 23
L33tH4x 42
LLCoolDave 27
MaxxT 25
Misha46 25
O_O 22
johnsmith 30
red 12
tom123 26
scores.csv:
LLCoolDave,23
LLCoolDave,27
red,12
LLCoolDave,26
tom123,26
O_O,7
Misha46,24
O_O,14
Empiro,18
Empiro,18
MaxxT,25
L33tH4x,42
Misha46,25
johnsmith,30
Empiro,23
O_O,22
MaxxT,25
Misha46,24
我偶然发现如何检查是否需要替换某些名称的分数
import csv
dic = {}
with open("scores.csv", "r") as my_file:
my_file_reader = csv.reader(my_file)
for i in my_file_reader:
dic[i[0]] = i[1]
如果在csv上运行代码,您将看到LLCoolDave的分数是26而不是27。这是因为每次看到新条目时,您都会更新字典,实际上,您保留的是最近的分数,而不是最高的分数。要解决这个问题,您可以尝试这样做:
import csv
dic = {}
with open("scores.csv", "r") as my_file:
my_file_reader = csv.reader(my_file)
for row in my_file_reader:
if row[0] in dic:
dic[row[0]] = max(dic[row[0]], row[1])
else:
dic[row[0]] = row[1]
print(dic)
实际上,我们首先检查当前用户的条目是否存在。如果是,他的最高分是新的分数和以前的最高分的最大值。否则,他的最高分就是新分数。