python中平均的字典列表

时间:2015-04-01 15:37:02

标签: python list dictionary mean

我有一个像这样的字典列表

data = [{'Name': 'john', 'Height': 176, 'Weight':62, 'IQ':120,..},...]

..表示各种其他整数/浮点属性,列表的所有元素都具有相同的格式..

我希望以最干净/最简单的方式获得平均身高,体重和所有其他数字属性。

我无法想出一个比正常情况更好的方法来进行太乱的循环...而且我不想使用任何外部包

3 个答案:

答案 0 :(得分:1)

是的,确实没有比循环更好的方法。你的基本问题是你必须查看列表中的每个元素,如果没有循环,你就无法真正做到这一点。

答案 1 :(得分:1)

这是你的开始

>>> data = [{'Name': 'john', 'Height': 176},{'Name': 'Vikash', 'Height': 170}]
>>> vals = [i['Height'] for i in data]
>>> sum(vals)/len(vals)
173

同样,您可以为每个属性设置不同的循环,或将循环放在函数

>>> def avrg(data,s):
...     vals = [i[s] for i in data]
...     return sum(vals)/len(vals)
... 
>>> data = [{'Name': 'john', 'Height': 176, 'Weight':62, 'IQ':120,},{'Name': 'Vikash', 'Height': 170, 'Weight':68, 'IQ':100}]
>>> 
>>> avrg(data,'Weight')
65

答案 2 :(得分:1)

您可以使用以下

sum([item['Weight'] for item in data])/len(data)

并使用

float(len(data)) 

如果你想要更精确的价值。