平均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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |