次のように、各文字の後に数字(1〜26)を付けた簡単な辞書を作成しようとしています{'a': 1, 'b': 2, 'c': 3, ...}
。これを行うために辞書内包表記を使用してみたかったので、次のようにしました。
from string import lowercase
d = {s:i for s in lowercase for i in range(1, 27)}
ただし、次のようになります{'a': 26, 'b': 26, 'c': 26, ...}
。これは、小文字のすべての値を反復処理し、1、2、3 (すべての値に対して) に割り当てて 26 で終わるために発生すると思います。キーは 26 個しかありません。これは辞書であるため、2 つのキーはありません。同じ文字の (したがって、最後にそれらすべてを 26 に上書きします)。これを修正する方法がわからないので、実際にこれを行う方法についてガイダンスを得ることができれば、それは素晴らしいことです.
dict()
and zip()
:を使用して動作するようにしましたdict(zip(lowercase, range(1, 27)))
。ただし、辞書内包表記を使用してこれを行う方法を知りたいです。ありがとう!