我正在寻找一种更简单的方法来创建这个python字典。我可以知道枚举函数是否有帮助吗?
a_dict = {'a':0, 'b':1, 'c':2, ....}
答案 0 :(得分:2)
你可以简单地使用string.ascii_lowercase
,它是全部小写字符的字符串,然后你zip
小写字母和数字列表,范围从0
到len(string.ascii_lowercase)
然后转换他们到dict
。
但是,您可能希望将其他一组字母用作string.ascii_letters
,string.ascii_uppercase
,string.letters
,string.punctuation
等。
您可以通过连接上面提到的字符串轻松过滤字典中所需的键,因为string.ascii_lowercase+string.ascii_uppercase
会给我们一个字符串,首先包含26个小写字母,然后是26个大写字母,您也可以应用切片获得所需字符集的方法(如string.ascii_lowercase[0:15]
)会为您提供"abcdefghijklmn"
import string
alphabets = string.ascii_lowercase
print dict(zip(alphabets, range(len(alphabets))))
>>> {'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'k': 10, 'j': 9, 'm': 12, 'l': 11, 'o': 14, 'n': 13, 'q': 16, 'p': 15, 's': 18, 'r': 17, 'u': 20, 't': 19, 'w': 22, 'v': 21, 'y': 24, 'x': 23, 'z': 25}
答案 1 :(得分:2)
我会使用像itertools.count
这样的无限数生成器从0生成数字。然后用count计算ascii字符并创建字典生成所需的元组。
>>> from itertools import count, izip
>>> import string
>>>
>>> dict(izip(string.ascii_lowercase, count()))
{'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'k': 10, 'j': 9, 'm': 12, 'l': 11, 'o': 14, 'n': 13, 'q': 16, 'p': 15, 's': 18, 'r': 17, 'u': 20, 't': 19, 'w': 22, 'v': 21, 'y': 24, 'x': 23, 'z': 25}
答案 2 :(得分:2)
使用enumerate
,您可以在dict
中使用generator expression和string.ascii_lowercasewithin
:
>>> import string
>>> dict((j,i) for i,j in enumerate(string.ascii_lowercase))
{'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'k': 10, 'j': 9, 'm': 12, 'l': 11, 'o': 14, 'n': 13, 'q': 16, 'p': 15, 's': 18, 'r': 17, 'u': 20, 't': 19, 'w': 22, 'v': 21, 'y': 24, 'x': 23, 'z': 25}
当enumerate
返回格式(index,element)
的元组时,你可以循环它,只需用元素更改索引然后将其转换为dict。
答案 3 :(得分:1)
假设....
表示您想要字母表:
{chr(i+97): i for i in range(26)}