这个Python函数叫什么?

时间:2014-12-14 01:28:44

标签: python

我看到了这段代码。

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]

然后,如果你调用这个函数:

map(char2num, '123456789')

你会得到:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

我的问题是为什么这个(不是map()函数,而是char2num函数)起作用,调用的是什么?

1 个答案:

答案 0 :(得分:1)

char2num使用字典:

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

调用该函数会查找该字符并返回相应的整数:

return {...}[s]

这只是字典查找:

>>> d = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4,
...      '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
>>> d['0']
0
>>> d['8']
8

该功能可表示为:

char2num = {str(i): i for i in range(10)}.__getitem__

也可以使用dict.__getitem__() method(通常由somedict[...]调用)并在字典理解中以程序方式表达字典:

>>> char2num = {str(i): i for i in range(10)}.__getitem__
>>> char2num('0')
0
>>> char2num('8')
8