2017-09-06 53 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。相信我我不知道我可以接受答案,我总是试着投票答案,但因为我的名誉很小,所以我不能。 –