我创建了一个包含26个字母的字典,代码如下:
aDict={
"a": 1,
"b": 2,
"c": 3,
"d": 4,
etc...
}
我正在尝试改进我的代码,我的问题是,有没有更简短的方法来完成这个任务,而不需要逐个输入所有这些数字?
我创建了一个包含26个字母的字典,代码如下:
aDict={
"a": 1,
"b": 2,
"c": 3,
"d": 4,
etc...
}
我正在尝试改进我的代码,我的问题是,有没有更简短的方法来完成这个任务,而不需要逐个输入所有这些数字?
您可以在此处使用 string.ascii_lowercase
和字典推导。
In [4]: from string import ascii_lowercase as al
对于 Python 2.7+:
In [5]: dic = {x:i for i, x in enumerate(al, 1)}
对于Python 2.6或更早版本:
In [7]: dic = dict((y, x) for x, y in enumerate(al, 1))
aDict = dict(zip('abcdefghijklmnopqrstuvwxyz', range(1, 27)))
或者可以不用硬编码字母表:
import string
aDict = dict(zip(string.ascii_lowercase, range(1, 27)))
itertools.count(1)
或range(1, 1+len(string.ascii_lowercase))
进行压缩。 - pilcrow尝试这个,在Python 2.6及更早版本中有效:
from string import ascii_lowercase
d = {}
for i, c in enumerate(ascii_lowercase, 1):
d[c] = i
d = {c : i for i, c in enumerate(ascii_lowercase, 1)}
您可以使用ord()
函数找到字符的ASCII值,反之使用chr()
函数:
>>> ord('a')
97
for i in range(97, 97+26):
x[chr(i)] = i - 96
Python 2.7及以上版本:
import string
letters = {k: v for v, k in enumerate(string.ascii_lowercase, 1)}
Python 2.6及以下版本:
import string
letters = dict((k, v) for v, k in enumerate(string.ascii_lowercase, 1))
dic
”吗? - Sigur