如何在python中汇总两个列表项

时间:2013-07-14 05:41:31

标签: python

我有一本字典:

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'。

2 个答案:

答案 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]