2013-03-31 28 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)}