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

时间:2018-11-17 13:13:33

标签: python-3.x

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

2 个答案:

答案 0 :(得分:1)

Python's documentation所述,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)

答案 1 :(得分: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。这很有意义。

希望这会有所帮助。