Agradeceríamos tu ayuda para compartir nuestros artículos con relación a las ciencias de la computación.
Solución:
Quieres un diccionario Python nativo.
(y probablemente también desee que sus valores comiencen desde “0” y no desde “1”, por lo que puede void agregando un +1 en todas sus asignaciones, como se muestra a continuación)
Construye uno con esto:
import string
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
values[letter] = index + 1
Esto te da cosas como:
print values["a"]
-> 1
Por supuesto, probablemente podría usar la función incorporada “ord” y omitir este diccionario por completo, como en las otras respuestas:
print ord("c") - (ord("a")) + 1
O en python 3.x o 2.7, puede crear el diccionario en un solo paso con una expresión de generador de dictado:
values = chr(i): i + 1 for i in range(ord("a"), ord("a") + 26)
Si solo desea asignar caracteres del alfabeto ASCII a números, puede usar ord()
y luego ajustar el resultado:
>>> ord('a') - 96
1
Si quieres que esto funcione también para letras mayúsculas:
>>> ord('A'.lower()) - 96
1
Además, es posible que desee validar que el argumento es de hecho un solo carácter ASCII:
>>> char = 'a'
>>> len(char) == 1 and char.isalpha() and 'a' <= char <= 'z'
True
O:
>>> import string
>>> len(char) == 1 and char in string.ascii_lowercase
True
def value(letter):
return ord(letter) - ord('a') + 1
Tienes la posibilidad dar recomendación a esta noticia si te ayudó.