1

次のように、各文字の後に数字(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)))。ただし、辞書内包表記を使用してこれを行う方法を知りたいです。ありがとう!

4

1 に答える 1

4

enumerate:

{s: i for i, s in enumerate(lowercase, 1)}
于 2013-03-31T17:43:55.053 に答える