加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:17:18 所属栏目:Python 来源:网络整理
导读:在我的代码中,我从不同的来源获得两个不同的列表,但我知道它们的顺序相同.第一个列表(“names”)包含键字符串列表,而第二个列表(“result_values”)是一系列浮点数.我需要使该对唯一,但我不能使用字典,因为只保留插入的最后一个值:相反,我需要对具有重复键
在我的代码中,我从不同的来源获得两个不同的列表,但我知道它们的顺序相同.第一个列表(“names”)包含键字符串列表,而第二个列表(“result_values”)是一系列浮点数.我需要使该对唯一,但我不能使用字典,因为只保留插入的最后一个值:相反,我需要对具有重复键的值进行平均(算术平均).

想要结果的示例:

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}

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

解决方法

反正我会用字典

averages = {}
counts = {}
for name,value in zip(names,result_values):
    if name in averages:
        averages[name] += value
        counts[name] += 1
    else:
        averages[name] = value
        counts[name] = 1
for name in averages:
    averages[name] = averages[name]/float(counts[name])

如果您关注大型列表,那么我将使用itertools中的izip替换zip.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读