如何计算python字典每个键中不同值的平均值?

时间:2017-09-06 18:40:37

标签: python python-2.7 dictionary

我有一本字典。我想计算每个键和打印结果的平均值,以便结果显示关键和相关的平均值。以下代码计算平均值,但我不知道如何将密钥与平均值相关联。我想要的答案是Mean = {22:average1,23:average2,24:average3}。

          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()]

3 个答案:

答案 0 :(得分: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用作变量名称,它会使内部类名称同名。

答案 1 :(得分: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}

答案 2 :(得分:0)

Python 3.4及更高版本的更新

>>> from statistics import mean    # Python 3.4+
>>> d = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]}
>>> {k:mean(v) for k,v in d.items()}
{22: 0.5, 23: 0.8, 24: 1.8}
>>>