jsb*_*eno 10
你想要一个原生的python字典.
(并且您可能还希望您的值从"0"开始而不是从"1"开始,因此您可以无效地在所有映射上添加+1,如下所示)
用这个构建一个:
import string
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
values[letter] = index + 1
Run Code Online (Sandbox Code Playgroud)
这给了syou之类的东西:
print values["a"]
-> 1
Run Code Online (Sandbox Code Playgroud)
当然,你可能可以使用"ord"内置函数并完全跳过这个字典,就像在其他答案中一样:
print ord("c") - (ord("a")) + 1
Run Code Online (Sandbox Code Playgroud)
或者在python 3.x或2.7中,您可以使用dict生成器表达式在单个传递中创建dicionary:
values = {chr(i): i + 1 for i in range(ord("a"), ord("a") + 26)}
Run Code Online (Sandbox Code Playgroud)
如果只想将ASCII字母的字符映射到数字,则可以使用ord(),然后调整结果:
>>> ord('a') - 96
1
Run Code Online (Sandbox Code Playgroud)
如果您也希望它也适用于大写字母:
>>> ord('A'.lower()) - 96
1
Run Code Online (Sandbox Code Playgroud)
另外,您可能想验证该参数确实是单个ASCII字符:
>>> char = 'a'
>>> len(char) == 1 and char.isalpha() and 'a' <= char <= 'z'
True
Run Code Online (Sandbox Code Playgroud)
要么:
>>> import string
>>> len(char) == 1 and char in string.ascii_lowercase
True
Run Code Online (Sandbox Code Playgroud)