簡體   English   中英

如何以簡潔的方式創建一個字母作為鍵的字典?

[英]How to create a dict with letters as keys in a concise way?

我創建了26個字母的字典,如下所示:

aDict={
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    etc...
}

我正在嘗試使我的代碼更好,我的問題是,有沒有更短的方法來做到這一點而不輸入所有這些數字?

你可以在這里使用string.ascii_lowercase和dict comprehension。

In [4]: from string import ascii_lowercase as al

對於Python 2.7+:

In [5]: dic = {x:i for i, x in enumerate(al, 1)}

對於Python 2.6或更早版本:

In [7]: dic = dict((y, x) for x, y in enumerate(al, 1))
aDict = dict(zip('abcdefghijklmnopqrstuvwxyz', range(1, 27)))

或者不是硬編碼字母表:

import string
aDict = dict(zip(string.ascii_lowercase, range(1, 27)))

試試這個,它適用於Python 2.6及更早版本:

from string import ascii_lowercase
d = {}
for i, c in enumerate(ascii_lowercase, 1):
    d[c] = i

如果您使用的是Python 2.7或更高版本,則可以使用字典理解

d = {c : i for i, c in enumerate(ascii_lowercase, 1)}

您可以使用ord()函數找到字符的ascii值,反之則是chr()

>>> ord('a')
97

然后,您可以從ascii值創建字典,如下所示:

for i in range(97, 97+26):
    x[chr(i)] = i - 96 

Python 2.7及以上版本:

import string

letters = {k: v for v, k in enumerate(string.ascii_lowercase, 1)}

Python 2.6及以下版本:

import string

letters = dict((k, v) for v, k in enumerate(string.ascii_lowercase, 1))
dict([(chr(i),i-96) for i in range(97,123)])

但我喜歡@Ashwini Chaudhary的方法:看起來更清潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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