[英]Create python dictionary by enumerate function
我正在尋找創建此python字典的更簡單方法。 我可以知道枚舉函數是否可以提供幫助?
a_dict = {'a':0, 'b':1, 'c':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
來輕松過濾字典中所需的鍵, 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}
我將使用像itertools.count
這樣的無限數生成器來從0開始生成數字。然后將帶有ascii字符的zip壓縮成數字,並創建生成字典所需的元組。
>>> 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}
使用enumerate
可以在dict
使用生成器表達式和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)
元組時(index,element)
您可以對其進行循環,只需使用element更改索引,然后將其轉換為dict。
假設....
表示您想要字母:
{chr(i+97): i for i in range(26)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.