我正在尝试为每个字母创建一个简单的字典,其后带有数字(从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)))使它工作。但是,我想知道如何使用字典理解来做到这一点。谢谢!

最佳答案

使用enumerate

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

关于python - 词典理解错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15732438/

10-12 22:52