我有一本字典:
my_dict = {'A': [-1,-1,-1], 'B': [-1,-1,-1], 'C': [0,0,1]}
my_list=['A','C']
我想找到'A'和'C'的平均值,使得平均值是一个新列表,其中包含字典键A和C的值除以2:
result=[(-1+0)/2, (-1+0)/2, (-1+1)/2]
,result=[-0.5, -0.5, 0.0]
如何计算结果?请注意my_list=['A','C']
未修复,因此请不要使用固定值。
编辑:my_list=['A','C']
是传递给函数的变量。它可以是例如['A','B','C']。所以,请考虑一下。我不能在代码中明确使用'A'和'C'。
答案 0 :(得分:8)
听起来你真的想要使用熊猫,或者至少是numpy。在熊猫中,这是:
import pandas as pd
data = pd.DataFrame({'A': [-1,-1,-1], 'B': [-1,-1,-1], 'C': [0,0,1]})
my_list = ['A', 'C']
data[my_list].mean(axis=1)
无论如何,在普通的python中,这是:
[sum(values)/float(len(my_list)) for values in zip(*[my_dict[key] for key in my_list])]
答案 1 :(得分:3)
from __future__ import division # for python < 3 only
my_dict = {'A': [-1,-1,-1], 'B': [-1,-1,-1], 'C': [0,0,1]}
my_list=['A','C']
l = []
for v in zip(*(my_dict[x] for x in my_list)):
l += [ sum(v) / len(v) ]
如果你有Python 2.x那么你需要future.division for float division。以上内容适用于my_list
中的任意数量的项目。例如,对于my_list = ['A,' B', 'C']
,它会产生:
[-0.666, -0.666, -0.333]