[英]Find Max Average of Dictionary Values
我還有一個空白,我不知道如何回答。 我有一個問題,我需要填寫這段代碼中的空白; 其中空白是[x1]
、 [x2]
等部分。
grades = {"Sam": [85, 90, 95], "Sue": [82, 96, 91], "Ted": [30, 59, 43], "Pat": [72, 75, 78]}
highest = 0
for [x1]:
exams = grades[student]
average = 0
for [x2]:
average += exam
average = average / [x3]
# Make sure that "highest" holds the highest average score.
if [x4]:
[x5]
print(highest)
到目前為止我嘗試過的解決方案是:
[x1]
= grades in student
[x2]
= grade in range(len(student))
[x3]
= sum(exams)
我不確定這些是否正確,我不知道要嘗試什么[x4]
和[x5]
。
所以我相信你的任務是打印出平均分最高的學生;
grades = {"Sam": [85, 90, 95], "Sue": [82, 96, 91], "Ted": [30, 59, 43], "Pat": [72, 75, 78]}
highest = 0
for [x1]:
exams = grades[student]
average = 0
for [x2]:
average += exam
average = average / [x3]
# Make sure that "highest" holds the highest average score.
if [x4]:
[x5]
print(highest)
highest
顯然必須保持最高分,因為它從零開始,我認為您只能更改空格;
grades
包含所有信息,因此很明顯它是您需要遍歷的內容,您需要知道dict
對象在遍歷它們時的行為方式。
如果你有類似的東西:
myDictionary = {keyObject1: valueObject1, keyObject2: valueObject2, keyObject3: valueObject3}
有幾種方法可以遍歷這個字典,要么由默認行為提供,要么通過dict
類方法;
for thing in myDictionary:...
將遍歷字典中的每個條目,並將thing
設置為字典的當前key
。
for thing in myDictionary.keys():...
將執行與上述相同的操作,但更明確一些。 它的作用與myDictionary.keys()
返回字典中所有key
的列表相同,然后像普通列表一樣對其進行迭代。
for thing in myDictionary.values()
會,你猜對了,和上面一樣,除了thing
將是字典的當前value
。
在大多數情況下,另一個選項是最好的,因為它使代碼更具可讀性和簡潔性; for thing in myDictionary.items():...
遍歷字典設置thing
到tuple
(key, value)
,為每個字典條目。 我在每個例子中都使用了thing
,但通常你會看到下面的內容:
for key in myDictionary:
pass
for key in myDictionary.keys():
pass
for value in myDictionary.values():
pass
for key, value in myDictionary.items():
pass
最后一個將元組解包為兩個值。 通常, key
/ value
被替換為其他更有意義的變量名。
因此,對於您的第一個blank
,您正在遍歷grades
字典,其中keys
是學生姓名,因此您有[x1]
的幾個選擇;
for student in grades:....
或者
for student in grades.keys():....
這將使學生為每個循環保存student
的姓名,然后是下一行; exams = grades[student]
將包含該學生的考試成績。
下一部分只是計算每個學生的平均分,將所有結果相加,然后除以結果數。
同樣,它只是簡單地遍歷考試結果數組。
看下面的代碼;
myNumbers = [1,2,3,4,5,6]
for myNumber in myNumbers:
print myNumber
這將打印1 2 3 4 5 6
(每次都在新行上)。 這是因為for ... in ...:
構造遍歷您給它設置的變量等於當前元素的任何內容。 您需要遍歷存儲在exams
數組中的考試成績,然后除以考試成績總數。
目前,您正在迭代range(len(student))
。 len(myArray)
完全按照你的想法去做,它只是給你myArray
的長度,所以在這種情況下,每個學生的長度都是2
。 range(myNumber)
給出一個數組[0, 1, ... myNumber]
,因此在您的代碼中,您將計算平均值為 (0+1+2) / sum(所有考試結果),其中這里將永遠為零。
您需要將考試成績相加,然后除以考試成績的數量。
至於最后兩個變量,這部分是嘗試計算當前平均值是否為最高平均值,因此應該測試當前平均值是否大於highest
,如果是,則更新highest
。
希望這就是您完成其余blanks
。
def get_highest_average(grades):
return max(sum(scores)/len(scores) for scores in grades.values())
此函數將返回字典grades
的最高平均值。 它使用生成器理解來計算每個分數列表的平均值,然后將它們傳遞給內置的max()
以找到最高值,並返回該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.