写这个表达式的有效方法:英文字母词典

use*_*312 1 python

实现这个表达式的有效方法是什么?

{'a': 1, 'b': 2 ... 'z': 26}
Run Code Online (Sandbox Code Playgroud)

我试过了:

x = dict(zip(chr(range(ASCII of A, ASCII of Z)))
Run Code Online (Sandbox Code Playgroud)

像这样的东西?但我无法弄清楚正确的表达方式.

Joh*_*ooy 7

>>> from string import lowercase
>>> dict((j,i) for i,j in enumerate(lowercase, 1)) 
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12, 'o': 15, 'n': 14, 'q': 17, 'p': 16, 's': 19, 'r': 18, 'u': 21, 't': 20, 'w': 23, 'v': 22, 'y': 25, 'x': 24, 'z': 26}
Run Code Online (Sandbox Code Playgroud)

enumerate(lowercase) 返回此序列 (0, 'a'), (1, 'b'), (2, 'c'),...

通过添加可选参数,枚举从1开始而不是0

enumerate(lowercase, 1) 返回此序列 (1, 'a'), (2, 'b'), (3, 'c'),...

早于2.6的python不支持可选参数,因此您可以这样写

>>> dict((j,i+1) for i,j in enumerate(lowercase)) 
Run Code Online (Sandbox Code Playgroud)

  • 枚举+1(小写) - 虽然`,1`支持需要2.6 (2认同)