整数列表和字典的平均值

时间:2017-06-20 06:46:07

标签: python list dictionary average

有没有办法计算两个或多个列表甚至词典的平均值?

这就是我提出的:

lista = [1, 2, 3, 4, 5]
listb = [5, 4, 3, 2, 1]

listavg = [0]*5
count = 0
for i in lista:
    listavg[count] = (i + listb[count]) / 2
    count += 1

print(listavg)
[3.0, 3.0, 3.0, 3.0, 3.0]

但如果我有100个名单怎么办?如果这些列表在这些词典中怎么办呢?

{'A': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'B': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'C': [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'D': [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], 'E': [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], 'F': [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], 'G': [6, 6, 6, 6, 6, 6, 6, 6, 6, 6], 'H': [7, 7, 7, 7, 7, 7, 7, 7, 7, 7], 'I': [8, 8, 8, 8, 8, 8, 8, 8, 8, 8], 'J': [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]}

P.S。列表的长度始终相同。

编辑:重要提示是我想要每个索引的平均值,而不是列表的平均值。

3 个答案:

答案 0 :(得分:4)

使用zip和列表理解:

>>> [sum(l)/len(l) for l in zip(*list_dict.values())]
[4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5]

答案 1 :(得分:1)

您可以使用zip()从输入列表中获取按索引方式组合在一起的每个元素的元组,并使用sum()将它们添加到一起:

>>> def averages(*lists):
    return [sum(els) / len(els) for els in zip(*lists)]

>>> averages([1, 2, 3, 4, 5], [5, 4, 3, 2, 1])
[3.0, 3.0, 3.0, 3.0, 3.0]
>>> 

答案 2 :(得分:0)

lista = [1, 2, 3, 4]
listb = [5, 6, 7, 8, 9]
lists = lista + listb
average = sum(lists) / len(lists) 

我认为这很好。