Dict理解错误

时间:2013-03-31 17:41:37

标签: python dictionary dictionary-comprehension

我正在尝试为每个字母创建一个简单的字典,后面带有一个数字(从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个键,因为它是一个字典,它不会有两个键相同的字母(因此它将所有这些都覆盖到最后的26)。我不知道如何解决这个问题,所以如果我能够获得如何实际操作的指导,那就太棒了。

我使用dict()zip()dict(zip(lowercase, range(1, 27)))开始工作。但是,我想知道如何使用字典理解来做到这一点。谢谢!

1 个答案:

答案 0 :(得分:4)

使用enumerate

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