次のような 26 文字のアルファベットの辞書を作成しました。
aDict={
"a": 1,
"b": 2,
"c": 3,
"d": 4,
etc...
}
私は自分のコードをより良くしようとしていますが、私の質問は、これらすべての数字を入力せずにこれを行うより短い方法はありますか?
次のような 26 文字のアルファベットの辞書を作成しました。
aDict={
"a": 1,
"b": 2,
"c": 3,
"d": 4,
etc...
}
私は自分のコードをより良くしようとしていますが、私の質問は、これらすべての数字を入力せずにこれを行うより短い方法はありますか?
string.ascii_lowercase
ここで理解度を使用して口述することができます。
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)))
これを試してください。Python2.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()
。逆は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))