[英]Looping through values in file data
編寫一個腳本 high_scores.py,它將讀取用戶分數的 CSV 文件並顯示每個人的最高分數。 您將讀入的文件名為 scores.csv。 您應該將高分作為值存儲在字典中,並將相關名稱作為字典鍵。 這樣,當你讀入每一行數據時,如果這個名字在字典中已經有一個分數與之關聯,你可以比較這兩個分數,並決定是否替換字典中“當前”的高分。 在字典的鍵上使用 sorted() function 以顯示高分的有序列表,它應該匹配這個 output:
Empiro 23
L33tH4x 42
LLCoolDave 27
MaxxT 25
Misha46 25
O_O 22
johnsmith 30
red 12
tom123 26
分數.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)
本質上,我們首先檢查當前用戶是否存在條目。 如果是,他的最好成績是新成績和之前最好成績的最大值。 否則,他的最好成績就是新成績。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.