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))
如果您想要更精确的值。
我有一个这样的字典列表
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))
如果您想要更精确的值。