4

我有一本字典:

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]

IE,result=[-0.5, -0.5, 0.0]

如何计算结果?注意my_list=['A','C']不是固定的,所以请不要使用固定值。

编辑:my_list=['A','C']是传递给函数的变量。例如,它可以是 ['A','B','C']。所以,请考虑一下。我不能在代码中明确使用“A”和“C”。

4

2 回答 2

8

听起来你真的很想使用 pandas,或者至少是 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])]
于 2013-07-14T05:45:06.403 回答
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 进行浮点除法。以上应该适用于my_list. 例如,对于my_list = ['A,' B', 'C'],它产生:

[-0.666, -0.666, -0.333]
于 2013-07-14T05:47:42.473 回答