簡體   English   中英

遍歷文件數據中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM