【问题标题】:Average values of integer lists and dictionaries整数列表和字典的平均值
【发布时间】:2017-06-20 06:46:06
【问题描述】:

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

这是我想出的:

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]}

附:列表的长度始终相同。


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

【问题讨论】:

  • 也许您可以将列表设为列长度向量的元组,然后使用#statistics.mean 函数

标签: python list dictionary average


【解决方案1】:

使用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]

【讨论】:

  • 哇,我的问题的一行代码:D。谢谢。
【解决方案2】:

您可以使用 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]
>>> 

【讨论】:

    【解决方案3】:
    lista = [1, 2, 3, 4]
    listb = [5, 6, 7, 8, 9]
    lists = lista + listb
    average = sum(lists) / len(lists) 
    

    我认为这很好。

    【讨论】:

    • 我想你可能误解了我的问题。
    • 我不确定你的问题的含义。您能否给我使用的代码和所需的输出。这将帮助我和其他人帮助你。
    • 感谢@Rawing 和Christian Dean,我已经找到了解决方案。我想要的是获得比较 2 个列表索引的平均值。我包含了我正在寻找的示例输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2015-06-06
    相关资源
    最近更新 更多