我正在尝试为每个字母创建一个简单的字典,其后带有数字(从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/