Python 同一数字的乘法键
我使用的是python 3.5, 我需要将这个dict相乘,这应该输出dict每个键的相乘结果Python 同一数字的乘法键,python,python-3.x,dictionary,list-comprehension,dict-comprehension,Python,Python 3.x,Dictionary,List Comprehension,Dict Comprehension,我使用的是python 3.5, 我需要将这个dict相乘,这应该输出dict每个键的相乘结果 {0: [0.0008726003490401396, 0.004363001745200698, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490
{0: [0.0008726003490401396, 0.004363001745200698, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490401396, 0.0017452006980802793, 0.0017452006980802793, 0.0008726003490401396, 0.0008726003490401396], 1: [0.007853403141361256, 0.008726003490401396, 0.0008726003490401396], 2: [0.004363001745200698, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490401396, 0.0008726003490401396, 0.007853403141361256, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.002617801047120419, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.002617801047120419, 0.0008726003490401396, 0.0008726003490401396, 0.0017452006980802793, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.002617801047120419, 0.0034904013961605585, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.002617801047120419, 0.0008726003490401396, 0.0034904013961605585, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396, 0.0008726003490401396]}
这是我的尝试,但不起作用:
lista = {k: [v*v for v in v] for k, v in lista.items()}
例如,我将输出:
{0: [0.068726003490401396], 1: [0.077853403141361256, 2: [0.098363001745200698]}
使用字典理解和+:
与其理解内部列表,不如研究python的“reduce”函数谢谢你的回答..但是0.0008726003490401396*0.004363001745200698=不是MoltiApplication的结果..@DavideDiMenna,那么,你能详细说明预期值是如何计算的吗?你说得对!现在我试着去做。。没有导入不是一种方法吗?@DavideDiMenna,您可以用
lambda,b:a*b
替换mul
。但是reduce应该在python3.x中导入。@DavideDiMenna,reduce(…)
->reduce(…)*0.5似乎是您想要的。
>>> from functools import mul
>>> mul(3, 4) # == 3 * 4
12
>>> from functools import reduce
>>> reduce(mul, [3, 4, 2]) # == (3 * 4) * 2
24
>>> from functools import reduce
>>> from operator import mul
>>>
>>> lista = {
... 0: [0.0008726003490401396, 0.004363001745200698],
... 1: [0.007853403141361256, 0.008726003490401396, 0.0008726003490401396],
... 2: [0.004363001745200698, 0.0008726003490401396, 0.0008726003490401396],
... }
>>>
>>> {key: reduce(mul, value) for key, value in lista.items()}
{0: 3.8071568457248673e-06, 1: 5.979827506374137e-08, 2: 3.322126392430076e-09}
>>> {key: [reduce(mul, value)] for key, value in lista.items()}
{0: [3.8071568457248673e-06], 1: [5.979827506374137e-08], 2: [3.322126392430076e-09]}