我一直在尝试学习reduce函数,一开始它看起来很简单直接。这里是代码
rit = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} reduce(lambda x, y: rit[x] + rit[y], s)
个字符解释一下会有帮助。我期待这个数字的总和,在引用字典后,但我最终得到了这个错误。
8ehkhllq1#
x是运行累加值,不是s的元素,而y是s的下一个元素。你不应该使用x作为字典的索引,直接添加就可以了。使用更有意义的名称会有所帮助,如acc和item。您还需要提供累加器的初始值。如果没有给出,则默认为s的第一个元素,但s包含字符,而不是数字。
x
s
y
acc
item
rit = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} s = 'XVII' num = reduce(lambda acc, item: acc + rit[item], s, 0) print(num) # prints 17
字符串
1条答案
按热度按时间8ehkhllq1#
x
是运行累加值,不是s
的元素,而y
是s
的下一个元素。你不应该使用x
作为字典的索引,直接添加就可以了。使用更有意义的名称会有所帮助,如acc
和item
。您还需要提供累加器的初始值。如果没有给出,则默认为
s
的第一个元素,但s
包含字符,而不是数字。字符串