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}