想建立如下映射关系:
'a' --> 'c'
'b' --> 'd'
...
'y' --> 'a'
'z' --> 'b'
在C中我们可以很轻松的用加法实现, 但是换到python, 我想到了以下方法:
from string import ascii_lowercase as al
my_dict = dict(zip(al, [chr((ord(x)-95)%26+97) for x in al]))
看起来一点都不cool, 主要是求字符的后两位字符那里处理的不好, 大伙有没有更pythonic点的方法呢?
我不知道为什么还要用到chr 和ord?? 我的意思是说:你的需求很简单啊,26个字母是知道的咯,往后错2位是么。
需求是实现了,我觉得你可能问题关键不是我所回答的。
Python Challenge Level 1 Walkthrough
dict(zip(al, map(lambda x : chr((ord(x) - 95) % 26 + 97), al)) )
坐等高手...
呵呵, 没有检验部分
其实一点也不 Pythonic :(