1

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

4

1 回答 1

4

enumerate

{s: i for i, s in enumerate(lowercase, 1)}
于 2013-03-31T17:43:55.053 回答