我看到了这段代码。
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
函数)起作用,调用的是什么?
答案 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