2013-03-31 43 views
1

我想創建一個簡單字典的每個字母后面的數字(從1-26),如下所示:{'a': 1, 'b': 2, 'c': 3, ...}。 我想使用字典理解這樣做是爲了嘗試,所以我所做的:Dict理解錯誤

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個鍵,因爲它是一個字典,它不會有兩個鍵(因此它將全部覆蓋到最後的26)。我不知道如何解決這個問題,所以如果我能夠得到關於如何真正做到這一點的指導,那會很好。

我得到它使用dict()zip()dict(zip(lowercase, range(1, 27)))。但是,我想知道如何使用字典理解來做到這一點。謝謝!

回答

4

隨着enumerate

{s: i for i, s in enumerate(lowercase, 1)}