Python 如何使用字符串中的多个元素对字典中的值求和?

Python 如何使用字符串中的多个元素对字典中的值求和?,python,python-3.x,jupyter-notebook,Python,Python 3.x,Jupyter Notebook,我正在尝试对字典中的值求和,字典中有字符串作为键,列表作为值 标准的sum(d.values())不起作用 d= {'a': [6,7,8], 'b':[30,-3, 5000,] 'c':[200.6], 'd':[2,2,2,2,2,2,2]} 当我使用sum(d.values())时,我得到: TypeError: unsupported operand type(s) for +: 'int' and 'list' 您可以解压缩d.values()返回的列表列表,如中所示 sum(y

我正在尝试对字典中的值求和,字典中有字符串作为键,列表作为值

标准的
sum(d.values())
不起作用

d= {'a': [6,7,8], 'b':[30,-3, 5000,] 'c':[200.6], 'd':[2,2,2,2,2,2,2]}
当我使用
sum(d.values())
时,我得到:

TypeError: unsupported operand type(s) for +: 'int' and 'list'

您可以解压缩
d.values()
返回的列表列表,如中所示

sum(y表示x在d中。value()表示y在x中)
您可以对每个子列表的
sum()
执行
sum()

sum(sum(x) for x in d.values())
或者,如果您不介意导入库:

import itertools as it
sum(it.chain(*d.values()))

这里已经有了很好的解决方案,但这是另一种方式

sum(sum(a) for a in d.values())

一个版本带有
itertools.chain

from itertools import chain

d= {'a': [6,7,8], 'b':[30,-3, 5000], 'c':[200.6], 'd':[2,2,2,2,2,2,2]}

print(sum(chain(*d.values())))
印刷品:

5262.6

您可以像这样在
dicts的值上使用
sum
map

>>> sum(map(sum, d.values()))
5262.6

最好的方法是创建一个生成器,它获取每个数组的和,并最终在生成器中找到值的和

或者如果你只是想看看代码


sum(d.values()中a的sum(a))
最短路径之一:-

sum( sum(d.values(), [] ) )
输出

5262.6

您是要对每个键的列表求和,还是对字典求和?只是对字典求和,而不是对每个键求和。或者
sum(sum(a)对a在d.values()中求和)
,这是我非常喜欢的,我更改了答案。谢谢你触发了记忆。