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()中求和)
,这是我非常喜欢的,我更改了答案。谢谢你触发了记忆。