关于python的字典问题。。。

#为什么返回这个字典能把字符串转换成int数组形式

from functools import reduce

DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(s):
        return DIGITS[s]
    return reduce(fn, map(char2num, s))

1个回答

这个程序将字符中的 '1' '2' '3' ... 利用查表法转换为1 2 3,这样就算出每一位。
再用reduce累计,每次都把之前的结果x10加上新的结果。

比如有 '123'
首先得到 '1' '2' '3'
然后map出来就是1 2 3
再reduce 
1
1x10+2
(1x10+2)x10+3
就算出123
wei1810
wei1810 分析不错!!!!
6 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复gzgzgz45: DIGITS这是一个字典,key是'1' '2' '3' value对应是1 2 3,所以 DIGITS['1'] = 1, DIGITS['2'] = 2, ...
6 个月之前 回复
gzgzgz45
喜欢学习的轮子 大概我知道但是这个char2num里面这个字典我没搞懂,他直接返回字典怎么变成‘1’‘2’‘3’,1,2,3,的呢
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问