簡體   English   中英

查找字典值的最大平均值

[英]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():...遍歷字典設置thingtuple (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.

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