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 文档中所述,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)
基本上,
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 的总和。这是有道理的。
希望这有帮助。