python Reduce函数一直让我困惑

3zwtqj6y  于 2023-08-02  发布在  Python
关注(0)|答案(1)|浏览(87)

我一直在尝试学习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)

个字符
解释一下会有帮助。
我期待这个数字的总和,在引用字典后,但我最终得到了这个错误。

8ehkhllq

8ehkhllq1#

x是运行累加值,不是s的元素,而ys的下一个元素。你不应该使用x作为字典的索引,直接添加就可以了。使用更有意义的名称会有所帮助,如accitem
您还需要提供累加器的初始值。如果没有给出,则默认为s的第一个元素,但s包含字符,而不是数字。

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

字符串

相关问题