我有一个像这样的字典列表
data = [{'Name': 'john', 'Height': 176, 'Weight':62, 'IQ':120,..},...]
..表示各种其他整数/浮点属性,列表的所有元素都具有相同的格式..
我希望以最干净/最简单的方式获得平均身高,体重和所有其他数字属性。
我无法想出一个比正常情况更好的方法来进行太乱的循环...而且我不想使用任何外部包
答案 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))
如果你想要更精确的价值。