sum() 函数在 python 中如何工作?

问题描述 投票:0回答:2
sum({'x':-10,'y':-20,'z':-30},60) 
#TypeError: unsupported operand type(s) for +: 'int' and 'str'

但是

sum({-10: 'x', -20: 'y', -30: 'z'},60)  
#returns 0
python-3.x sum
2个回答
1
投票

Python 文档中所述,sum 函数会将

start
值(第二个参数)与可迭代数据结构中的项目(第一个参数)相加。并且,正如评论中提到的,默认情况下
dict
可以通过其键进行迭代。

因此,您的第二个示例是将 60 (您的起始值)与您的数字字典项(键)相加:

>>> 60 + (-10) + (-20) + (-30)

0

但是,您的第一个示例是尝试将

string
添加到数字中,这不是
sum()
的目的:

>>> 60 + 'x' + 'y' + 'z'

(...) TypeError:+ 不支持的操作数类型:'int' 和 'str'

例如,如果您想要迭代字典的值,您可以使用

values()
函数。例如:

sum({'x':-10,'y':-20,'z':-30}.values(),60)

0
投票

基本上,

sum({'x':-10,'y':-20,'z':-30},60)
会导致错误,因为程序将遇到字符串而不是整数作为键。显然,程序不会将 60 添加到字符串中,因为该操作没有任何意义。 “x”+“y”、“z”+ 60 的结果是什么?

在第二个示例中,

sum({-10: 'x', -20: 'y', -30: 'z'},60)
程序仅迭代整数。这就是为什么您收到的 0 是 -10、-20、-30 + 60 = 0 的总和。这是有道理的。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.