在字典中查找值的均值

Rac*_*hel 6 python

我有一本字典,看起来像:

G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
Run Code Online (Sandbox Code Playgroud)

我用一个简单的发现平均的值如平均值(18,17,19,15,0)for循环,而不使用内置的功能一样.values().items()等等。我尝试了以下操作,但出现错误:

d=[float(sum(values)) / len(values) for key, values in G]
    return (d)   
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗????

ins*_*sin 8

import numpy as np
np.mean(list(dict.values()))
Run Code Online (Sandbox Code Playgroud)


Aar*_*all 6

为此,请使用约束条件而不是使用dict方法来实现“简单的for循环”:

G = {'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}


count = 0
_sum = 0
for key in G:
    count += 1
    _sum += G[key]

print('this is the mean: ', _sum/count)
Run Code Online (Sandbox Code Playgroud)

如果您应该避免使用dict方法,那么显然这是一项学术练习。

没有这个约束:

statistics标准库中的模块有一个mean方法,这是我的第一个想法(因为标准库不需要第三方软件包。):

>>> G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
>>> from statistics import mean
>>> mean(G[k] for k in G)
13.8
Run Code Online (Sandbox Code Playgroud)

诸如numpy和pandas之类的第三方程序包具有带mean方法的对象:

>>> from numpy import array
>>> array([G[k] for k in G]).mean()
13.8

>>> from pandas import Series
>>> Series([G[k] for k in G]).mean()
13.8
Run Code Online (Sandbox Code Playgroud)

如果我们允许自己使用该values()方法,则可迭代拆包会变得更加简单。由于某些原因,其他答案违反了该条件,所以我认为我应该展示一种更有效的方法:

>>> from numpy import array
>>> array([G[k] for k in G]).mean()
13.8

>>> from pandas import Series
>>> Series([G[k] for k in G]).mean()
13.8
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您使用numpy:

import numpy as np

np.array(list(dict.values())).mean()
Run Code Online (Sandbox Code Playgroud)

  • insanely_sin 下面的答案更简单:`np.mean(list(dict.values()))` (3认同)