# define an alphabet
alfa = "abcdefghijklmnopqrstuvwxyz"
# define reverse lookup dict
rdict = dict([ (x[1],x[0]) for x in enumerate(alfa) ])
print alfa[1] # should print b
print rdict["b"] # should print 1
rdict は、一度に 1 文字ずつアルファベットをステップスルーして作成される辞書です。enumerate 関数は、リスト インデックスと文字を含むタプルを返します。このコードで新しいタプルを作成して順序を逆にし、( x[1], x[0])
タプルのリストを辞書に変換します。辞書はハッシュ テーブル (キー、値) のデータ構造であるため、任意のアルファベット文字のインデックスを検索できるようになりました。
ただし、それは問題を解決したいものではありません。これがクラスの課題である場合、提出した場合、おそらく盗作として 0 を取得します。文字列をエンコードするには、まず alfa2[n] が alfa[n] のエンコード形式になるように編成された 2 番目のアルファベットを作成します。あなたの例では、2番目のアルファベットは2文字だけシフトされますが、文字をランダムにシャッフルしたり、他のパターンを使用して順序付けたりすることもできます. これらはすべて、ギリシャ語、キリル文字などの他のアルファベットでも引き続き機能します。