2017-09-06 60 views
0

我有一本字典。我想計算每個鍵和打印結果的平均值,以便結果顯示鍵和相關的平均值。下面的代碼計算平均值,但我不知道如何將密鑰與平均值相關聯。我期望的答案是平均值= {22:average1,23:average2,24:average3}。如何計算python字典每個鍵的不同值的平均值?

  mydict = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]} 

      Mean =[float(sum(values))/len(values) for key, values in 
      mydict.iteritems()] 
+1

非常接近,只是換到一個字典解析:'均值= {關鍵:浮置(SUM(值))/關鍵LEN(值),值dict.iteritems()}' – roganjosh

+0

@roganjosh:謝謝 –

回答

4

不要使用列表理解。使用字典理解來計算每個列表的平均值。您也from __future__ import division可以以避免使用float

>>> from __future__ import division 
>>> d = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]} 
>>> mean = {k: sum(v)/len(v) for k, v in d.iteritems()} 
>>> mean 
{22: 0.5, 23: 0.8, 24: 1.8} 
+0

漂亮的一點......未來的師! –

+0

@cᴏʟᴅsᴘᴇᴇᴅ嘿,謝謝!實際上,我沒有打算使用它,直到roganjosh指出OP使用Python 2.7:| –

5

你是在正確的軌道上。你只需要一個字典理解而不是列表comp。

_dict = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]} 

mean = {key : float(sum(values))/len(values) for key, values in _dict.iteritems()} 
print(mean) 
{22: 0.5, 23: 0.8, 24: 1.8} 

注:

  1. .iteritems在python3被替換.items
  2. (法定警告)不要使用dict作爲變量名,它屏蔽了該內建類的一樣的名字。
+0

感謝您的幫助。 –

+0

@ A.S我注意到你已經提出了很多問題,但都沒有接受。請閱讀:[當某人回答我的問題時該怎麼辦](https://stackoverflow.com/help/someone-answers)。您可以點擊最有幫助的答案旁邊的灰色支票,然後點擊_接受它。讓它成爲一種習慣,它有助於社區。祝一切順利。 –

+0

謝謝@COLDSPEED。相信我我不知道我可以接受答案,我總是試着投票答案,但因爲我的名譽很小,所以我不能。 –