2015-04-01 2 views
0

У меня есть список словаря, как этотсредний список словарей в Python

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

.. означает различные другие атрибуты целого/флоат и все элементы списка имеет такой же формат ..

I хотите получить среднюю высоту, вес и все другие числовые атрибуты самым чистым/простым способом.

Я не мог придумать лучшего способа, чем обычно для зацикливания, который был слишком грязно ... и я не хочу использовать какие-либо внешние пакеты

+0

Петли могут быть беспорядочными, если вы делаете их правильно. Опубликуйте то, что вы пробовали, и, возможно, мы сможем его подтянуть. – Kevin

ответ

1

Вы можете использовать следующую

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

и использование

float(len(data)) 

Если вы хотите получить более точное значение.

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 
Смежные вопросы