2015-04-28 84 views
0

我有一個defaultdict將名稱映射到分數列表。我需要計算出學生的平均分數。得到一個字典中每個鍵的列表的平均值

scores = {"Aaron" : ["1" , "3" , "4"] , "Joe" : ["3" , "7" , "2"] , "Bob" : ["7" , "4" , "8"]} 

我怎樣才能得到一個新的字典平均值?

averages = {"Aaron" : 2.7 , "Joe" : 4 , "Bob" : 13.7} 
+2

[XY問題](http://xyproblem.info/)。您要求提供有關如何將解決方案組合在一起的詳細信息,而不是要求如何解決您實際嘗試解決的問題。實際上,您希望幫助創建的所有臨時數據結構都是不必要的。你真正想做的是拿一本字典並從中創建另一本字典。就這樣。 – kindall

+0

爲什麼你不這樣回答? – DibDibsTH13TEEN

+2

我不認爲我的評論是一個完整的答案,並不希望評估如此。這是什麼意見... – kindall

回答

2

轉換從字符串爲float每個值,取平均值,並建立一個新的字典。

scores = {"Aaron" : ["1" , "3" , "4"] , "Joe" : ["3" , "7" , "2"] , "Bob" : ["7" , "4" , "8"]} 
averages = {key: sum(float(i) for i in value)/len(value) for key, value in scores.items()} 
+2

對於Python 2,你可以通過將int(i)改爲float(i)來省略'1.0 *'嗎? – TigerhawkT3

+0

謝謝你,davidism,你是一個救命的人:) 我得和我的計算老師談談關於defaultdict的不必要的用法,對我來說有點尷尬:/ – DibDibsTH13TEEN

相關問題