将字典

时间:2015-06-23 10:03:36

标签: python dictionary

我有一个名为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}

2 个答案:

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