我如何总结这个python字典并得到平均值?

时间:2014-03-17 04:49:05

标签: python-3.x

d = [{' C':0,' B':2.0,' A':7.0,' D':3.0 },{' C':2.0,' B':0,' A':5.0,' D':5.0},{& #39; C':7.0,' B':5.0,' A':0,' D':10.0},{' C& #39;:3.0,' B':5.0,' A':10.0,' D':0}]

如何总结这个python词典并获得平均值?...

3 个答案:

答案 0 :(得分:1)

>>> from functools import reduce
>>> d
[{'D': 3.0, 'A': 7.0, 'C': 0, 'B': 2.0}, {'D': 5.0, 'A': 5.0, 'C': 2.0, 'B': 0}, {'D': 10.0, 'A': 0, 'C': 7.0, 'B': 5.0}, {'D': 0, 'A': 10.0, 'C': 3.0, 'B': 5.0}]
>>> l = len(d)
>>> s = reduce(lambda x,y: {z:x[z]+y[z] for z in ['A','B','C','D']}, d)
>>> s = {x:s[x]/l for x in s}
>>> s
{'D': 4.5, 'A': 5.5, 'C': 3.0, 'B': 3.0}
>>>

答案 1 :(得分:0)

以下是获取'C'字段平均值的方法。只需将'C'更改为其他平均值所需的字段。

cAVG = sum(map(lambda item: item['C'], d))/len(d);

答案 2 :(得分:0)

您没有明确说明您希望如何平均值。

您可以使用此genexp获取所有值:

>>> [v for subdict in d for v in subdict.values()]
[2.0, 0, 7.0, 3.0, 0, 2.0, 5.0, 5.0, 5.0, 7.0, 0, 10.0, 5.0, 3.0, 10.0, 0]

按字典数量平均字典总和:

>>> sum(v for subdict in d for v in subdict.values())/len(d)
16.0

通过子字典对它们进行平均:

>>> [sum(subdict.values())/len(subdict) for subdict in d]
[3.0, 3.0, 5.5, 4.5]

如果你只想要平均'A':

>>> sum(v for subdict in d for k, v in subdict.items() if k == 'A')/len(d)
5.5