【发布时间】:2013-03-31 17:41:37
【问题描述】:
我正在尝试创建一个简单的字典,每个字母后面都有一个数字(从 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)))。但是,我想知道如何使用字典理解来做到这一点。谢谢!
【问题讨论】:
标签: python dictionary dictionary-comprehension