2014-12-14 2 views
0

Я видел этот код.Что называется этой функцией 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

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 
+0

Спасибо! Является ли ваш метод также функцией или пониманием списка? –

+1

@shidangai: это словарь, который производит точный словарь, а затем ищет связанный метод '__getitem__' в этом словаре. –

Смежные вопросы