通过枚举函数创建python字典

时间:2015-06-06 14:20:22

标签: python

我正在寻找一种更简单的方法来创建这个python字典。我可以知道枚举函数是否有帮助吗?

a_dict = {'a':0, 'b':1, 'c':2, ....}

4 个答案:

答案 0 :(得分:2)

你可以简单地使用string.ascii_lowercase,它是全部小写字符的字符串,然后你zip小写字母和数字列表,范围从0len(string.ascii_lowercase)然后转换他们到dict

但是,您可能希望将其他一组字母用作string.ascii_lettersstring.ascii_uppercasestring.lettersstring.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 expressionstring.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)}