如何以简洁的方式创建一个字母作为键的字典?

Ris*_*Ris 8 python dictionary

我创建了26个字母的字典,如下所示:

aDict={
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    etc...
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使我的代码更好,我的问题是,有没有更短的方法来做到这一点而不输入所有这些数字?

Ash*_*ary 18

你可以string.ascii_lowercase在这里使用和dict理解.

In [4]: from string import ascii_lowercase as al
Run Code Online (Sandbox Code Playgroud)

对于Python 2.7+:

In [5]: dic = {x:i for i, x in enumerate(al, 1)}
Run Code Online (Sandbox Code Playgroud)

对于Python 2.6或更早版本:

In [7]: dic = dict((y, x) for x, y in enumerate(al, 1))
Run Code Online (Sandbox Code Playgroud)


And*_*ark 6

aDict = dict(zip('abcdefghijklmnopqrstuvwxyz', range(1, 27)))
Run Code Online (Sandbox Code Playgroud)

或者不是硬编码字母表:

import string
aDict = dict(zip(string.ascii_lowercase, range(1, 27)))
Run Code Online (Sandbox Code Playgroud)

  • 如果你不打算对字母表进行硬编码,我建议不要硬编码它的长度,与`itertools.count(1)`或`range(1,1 + len(string.ascii_lowercase))`进行压缩. (3认同)