簡體   English   中英

通過枚舉函數創建python字典

[英]Create python dictionary by enumerate function

我正在尋找創建此python字典的更簡單方法。 我可以知道枚舉函數是否可以提供幫助?

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

您可以簡單地使用string.ascii_lowercase ,它是所有小寫字符的字符串,然后zip小寫字母和數字列表,范圍從0len(string.ascii_lowercase) ,然后將它們轉換為dict

但是,您可能需要使用其他一些字母集作為string.ascii_lettersstring.ascii_uppercasestring.lettersstring.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM