python - 平均 Python 中两个配对列表的重复值

标签 python list

在我的代码中,我从不同的来源获得了两个不同的列表,但我知道它们的顺序相同。第一个列表(“names”)包含键字符串列表,而第二个列表(“result_values”)是一系列 float 。我需要使这对唯一,但我不能使用字典,因为只会保留最后插入的值:相反,我需要对具有重复键的值进行平均(算术平均)。

想要的结果示例:

names = ["pears", "apples", "pears", "bananas", "pears"]
result_values = [2, 1, 4, 8, 6] # ints here but it's the same conceptually

combined_result = average_duplicates(names, result_values)

print combined_result

{"pears": 4, "apples": 1, "bananas": 8}

我唯一的想法涉及多次迭代,但到目前为止一直很丑陋......这个问题有一个优雅的解决方案吗?

最佳答案

from collections import defaultdict
def averages(names, values):
    # Group the items by name.
    value_lists = defaultdict(list)
    for name, value in zip(names, values):
        value_lists[name].append(value)

    # Take the average of each list.
    result = {}
    for name, values in value_lists.iteritems():
        result[name] = sum(values) / float(len(values))
    return result

names = ["pears", "apples", "pears", "bananas", "pears"]
result_values = [2, 1, 4, 8, 6]
print averages(names, result_values)

关于python - 平均 Python 中两个配对列表的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022465/

相关文章:

python - 按范围排列列表

list - 在每个位置创建具有新元素的列表列表

java - 如何修复列表中对象数组的不兼容类型

python - 为单个单元测试用例更改 celery 设置 task_always_eager

python - 在 R reticulate 中使用环境变量

Python:绘制从x轴上的点(X1,0)到点(X2,Y2)的线的问题

python - 低效代码 : comparing combining different columns from different files awk or perl?

python - 如何去除图像中对象的边缘噪声

python - 初始化一个字典,其中每个项目都是空的唯一列表的列表

java - Ebean finder 列表大小条件