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'的操作数类型
)