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词典并获得平均值?...
答案 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