2014-09-24 14 views
-3

我知道如何創建一個按名稱(鍵:值)計算總分的字典,但我想爲字典添加第二個值(鍵:(值,值))該名稱出現的次數。然後,我想通過將一個值除以另一個值來獲得平均分數。更新Python中的字典值超過1

Cleese 80 
Gilliam 78 
Jones 69 
Jones 90 
Cleese 90 
Chapman 90 
Chapman 100 
Palin 80 
Gilliam 82 
Cleese 85 
Gilliam 80 
Gilliam 75 
Idle 91 
Jones 90 
Palin 90 
Cleese 88 

這是我的代碼:

inFile = open('grades.txt','r') 

grades={} 
for line in inFile:  
    person=line.split() 
    if person[0] not in grades:  
     grades[person[0]]=float(person[1],1)  
    else:  
     grades[person[0]]=(float(person[1])+grades[person[0]],grades[person][1]+1) 

print(grades) 
inFile.close() 

應打印(以某種順序):

Gilliam 78.75 
Jones 83.0 
Cleese 85.75 
Chapman 95.0 
Idle 91.0 
Palin 85.0 

我得到漂浮只需要1個值的誤差。我還需要添加一些代碼,將每個人的第一個存儲值除以第二個值 - 平均分數。

+2

你的問題是什麼? – khelwood 2014-09-24 15:25:16

+2

分享你迄今爲止嘗試過的一些代碼。 – ronakg 2014-09-24 15:26:25

+0

就像'智商[Gilliam] = [78]'和'IQ [Gilliam] + = [82]'? – tgmath 2014-09-24 15:28:32

回答

0

使用一個元組來存儲每個鍵多個值:

myDict['Cleese'] = (80, N) 

要更新的元組,你不能只是做myTuple[1]++但是。你需要創建一個新的元組,如myDict['Cleese'] = (myDict['Cleese'][0], myDict['Cleese'][1]+1)

+0

元組不會工作更新 - 需要使用列表 – gkusner 2014-09-24 15:34:09

+1

@gkuser OP只是想知道所有值的平均值。一個元組就足夠用於這個目的。也許,....我沒有完全得到哪個平均值可以計算出來。 – tgmath 2014-09-24 15:36:57

+1

另一個線索是:如果新密鑰不存在,添加它:'如果密鑰不在myDict:myDict [key] =(0,0)',那麼你可以添加 – 2014-09-24 15:38:49