from functools import reduce
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
return reduce(fn, map(char2num, s))
我正在学习函数map()和reduce()。 {...} [。]是什么意思?
答案 0 :(得分:4)
它只是意味着:建立一个字典并从密钥返回一个特定的值。
print({'foo': 0, 'bar': 1}['foo']) # output : 0
print({'foo': 0, 'bar': 1}['bar']) # output : 1
答案 1 :(得分:1)
函数char2num
将字符串更改为其int
值。例如,如果:
s = '0'
它返回:
0 #int
实际上函数找到dictionary[s]
(带有键s
)并返回其值为int
的值。
答案 2 :(得分:1)
{}[]
表示检查字典中是否有特定密钥,因此如果找到该密钥则返回它,请考虑这个
str2int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7':7, '8': 8, '9': 9}
get_3 = str2int['3']
print(get_3)
>>> 3
它基本上与将字典分配给标识符/变量并在尝试此操作时访问密钥相同
get_3 = str2int['10']
你得到KeyError
该字典
对于一般映射中的函数一般用于将函数的操作应用于迭代
map(aFunction, aSequence)
记住python中的字符串是iterables,因此映射返回相应的字典值
通过将函数应用于iterable直到它返回单个值(即将此列表或可迭代为单个值)来减少工作,例如
因此,例如,如果使用字符串
调用函数str2int('234')
映射遍历并将字符串映射到字典中的值并返回列表
[2, 3, 4]
之后,reduce将前两个参数作为x and y
并应用操作x * 10 + y
并调用它直到它只是一个值,所以在第一次调用时
2 * 10 + 3 = [23, 4]
第二次电话
23 * 10 + 4 = [234]
所以我们现在有一个值,最后在函数结束时返回值234,你可以使用函数的内部逻辑来习惯这个概念