我有一个名为data
的字典,它看起来像这样
data = {
'active_rate': [95, 93, 92],
'purchase_per_active': [643, 629, 611]
}
如何将键的每个值与同一个字典中的另一个值相乘?像这样的东西,
[95*643, 93*629, 92*611]
我的方法是为列表中的每个键和单个值构造一个dict,然后计算产品,然后清除dict并继续,但它只是得到两个键的最终值。
代码:
def calculate(**kwargs):
d = {}
for key, value in kwargs.items():
for item in value:
d[key] = item
return d
a = calculate(**data)
print(a) # {'purchase_per_active': 611, 'active_rate': 92}
答案 0 :(得分:7)
[ar * ppa for ar, ppa in zip(data['active_rate'], data['purchase_per_active'])]
如果你想更通用(正如你在评论中所暗示的那样),你可以做到
[functools.reduce(operator.mul, xs, 1) for xs in zip(*data.values())]
但请注意,如果列表的长度不同,则会忽略某些项目。
答案 1 :(得分:1)
您给出的示例的类似解决方案是:
m1 = [data['active_rate'][i] * data['purchase_per_active'][i] for i in range(len(data['active_rate']))]
更通用的解决方案是:
from numpy import prod
m2 = [prod(i) for i in zip(*data.values())]