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
答案 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。这很有意义。
希望这会有所帮助。