python:如何为字母赋值?

Edd*_*ddy 6 python string mapping letters

我想为字母表中的每个字母分配一个值,以便 - > 1,b - > 2,c - > 3,... z - > 26.类似于返回字母值的函数,例如:

value('a') = 1

value('b') = 2

等等...

我将如何在python中执行此操作?

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)

  • 你可以使用`enumerate(string.ascii_lowercase,1)`来避免在循环中将`1`添加到`index` (4认同)

Ben*_*mes 5

如果只想将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)