Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在保留字典结构的同时,将字典数据类型中的列表值相乘?_List_Python 3.x_Dictionary_Key Value Store_Multiplication - Fatal编程技术网

List 如何在保留字典结构的同时,将字典数据类型中的列表值相乘?

List 如何在保留字典结构的同时,将字典数据类型中的列表值相乘?,list,python-3.x,dictionary,key-value-store,multiplication,List,Python 3.x,Dictionary,Key Value Store,Multiplication,在以下目录中(类,列表): 这给了我一个错误: 对于键,数据中的val.values(): AttributeError:“str”对象没有属性值 也试过, for k1 in data.items(): print(k1) 这张照片是: (2480,['0.25','0.1','0.083'] (2651,['0.43','0.11','0.23']) 但是我无法使用reduce(mul()函数将浮点值相乘 我想将浮点值相乘,但保留类,保留列表值 我希望输出为: defaultdic

在以下目录中(类,列表):

这给了我一个错误:

对于键,数据中的val.values():
AttributeError:“str”对象没有属性值

也试过,

for k1 in data.items():
    print(k1)
这张照片是:

(2480,['0.25','0.1','0.083']
(2651,['0.43','0.11','0.23'])

但是我无法使用
reduce(mul()
函数将浮点值相乘

我想将浮点值相乘,但保留类,保留列表值

我希望输出为:

defaultdict(<class 'list'>, {2480: ['0.002075'], 2651: ['0.010879']})
defaultdict(<class 'list'>, {2480: ['0.0135'], 2651: ['0.0049634']})
defaultdict(,{2480:['0.002075'],2651:['0.010879']})
defaultdict(,{2480:['0.0135'],2651:['0.0049634']})

但是,
defaultdict(您可以首先定义一个
multiply
函数:

>>> def multiply(*args):
...     res = args[0]
...     for arg in args[1:]:
...         res *= arg
...     return res
如果您只有两条命令:

d1_product = {key: multiply(*map(float, values)) for key, values in d1.items()}
d2_product = {key: multiply(*map(float, values)) for key, values in d2.items()}
尽管如此,如果您有两个以上的词典,您可能希望尝试类似的方法(您必须对其进行一些修改以跟踪各个dict,但是…可能尝试使用
enumerate
,如是

res = {}
for i, d in enumerate([d1, d2]):
    for key in d:
        values = map(float, d[key])
        product = multiply(*values)
        res[str(key) + str(i)] = product
其结果是:

>>> res
{'24801': 0.0135, '26511': 0.004963400000000001, '24800': 0.002075, '26510': 0.010879000000000002}
res = {}
for i, d in enumerate([d1, d2]):
    for key in d:
        values = map(float, d[key])
        product = multiply(*values)
        res[str(key) + str(i)] = product
>>> res
{'24801': 0.0135, '26511': 0.004963400000000001, '24800': 0.002075, '26510': 0.010879000000000002}