这是什么意思?

时间:2016-01-07 16:49:15

标签: python

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()。 {...} [。]是什么意思?

3 个答案:

答案 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,你可以使用函数的内部逻辑来习惯这个概念