Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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
Python 从字典执行项操作_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 从字典执行项操作

Python 从字典执行项操作,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我创建了两个相互关联的词典,情况是我必须执行加法和除法操作,但我在一个部分遇到了问题: dict1 = {1: [20900], 2: [20900], 3: [20900]} dict2 = {1: [2.5], 2: [5.0], 3: [7.5]} dict3 = {key:[dict1[key][0]*(dict2[key][0])] for key, valor in dict2.items()} 我想要的是将dict3项的总和累加起来,然后将其除以各自的项,如下所示: Cum

我创建了两个相互关联的词典,情况是我必须执行加法和除法操作,但我在一个部分遇到了问题:

dict1 = {1: [20900], 2: [20900], 3: [20900]}

dict2 = {1: [2.5], 2: [5.0], 3: [7.5]}

dict3 = {key:[dict1[key][0]*(dict2[key][0])] for key, valor in dict2.items()} 
我想要的是将dict3项的总和累加起来,然后将其除以各自的项,如下所示:

Cumulative sum of dict3 items = 52250 + 104500 + 156750 = 313500
dict3 = {1: [0.1667], 2: [0.333], 3: [0.500]}
然后将此数量除以3项中的每一项,最后我要查找的字典如下所示:

Cumulative sum of dict3 items = 52250 + 104500 + 156750 = 313500
dict3 = {1: [0.1667], 2: [0.333], 3: [0.500]}
我的问题是当除以累积的数字时。应该澄清的是,dict1和dict2在每个键中总是有一个单独的列表项


我将非常感谢您对这个问题的帮助,敬请。

在按照您已经完成的方式构建dict3之后

dict3 = {key:[dict1[key][0]*(dict2[key][0])] for key, valor in dict2.items()} 
您可以使用和字典计算累计和

dict3_sum = sum(value[0] for value in dict3.values())
然后将dict3的每个元素除以计算出的和

dict3 = {key: [value[0]/dict3_sum] for key, value in dict3.items()}

如果这些列表中总是有一个项目,为什么要使用列表?因为这些项目来自以前执行的其他操作,但感谢您的观察。@Dan因为
dict3.values()
是包含单个值的列表,
sum(dict3.values())
不起作用。(
TypeError:不支持+:'int'和'list'的操作数类型