Необходимо взять среднее длинного, странно отформатированного набора данных в Python - PullRequest
3 голосов
/ 20 июля 2011

Итак, у меня есть большой набор данных, который выглядит следующим образом

[('ART', [100, 234, 830, 304]), ('MATH', [600, 1400, 300, 340]), ('HISTORY', [2010, 300,   400, 600])]

Как бы превратить это в набор данных, в котором я могу усреднить числа внутри, а затем отсортировать?Я использую Python 2.7

1 Ответ

6 голосов
/ 20 июля 2011

для:

input = [('ART', [100, 234, 830, 304]), 
         ('MATH', [600, 1400, 300, 340]), 
         ('HISTORY', [2010, 300, 400, 600])]

это:

print sorted( ( (k,sum(v)/len(v)) for k,v in input ), key=lambda t: t[1] )

отпечатки:

[('ART', 367), ('MATH', 660), ('HISTORY', 827)]
...