python 中的平均词典列表

average list of dictionaries in python

我有一个这样的字典列表

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

.. 表示各种其他 integer/float 属性,列表的所有元素都具有相同的格式..

我想以 cleanest/easiest 方式获取平均身高、体重和所有其他数值属性。

我想不出比正常循环更好的方法,太乱了...而且我不想使用任何外部包

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

这是你的开始

>>> 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

您可以使用以下

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

并使用

float(len(data)) 

如果您想要更精确的值。