如何在 python 中做到 list/dict 理解

How to do this list/dict comprehension in python

我正在创建一个 python 字典,如下所示:

d= {i : chr(65+i) for i in range(4)}

现在 d 的输出是 {0: 'A', 1: 'B', 2: 'C', 3: 'D'}

我有一个要查找的键列表,如下所示:

l = [0, 1]

现在我想做的是创建另一个列表,其中包含与这些键对应的值,我想知道是否有 pythonic 方法可以使用列表或字典理解来做到这一点。

我可以做如下事情:

[x for x in d[0]]

但是,我不知道如何在此设置中遍历列表中的条目。我试过了:

[x for x in d[a] for a in l] # name 'a' not defined
[x for x in d[for a in l]] # invalid syntax

您想遍历 l,所以使用 for element in l。然后在左侧的字典中查找值生成表达式中的内容:

[d[element] for element in l]

请注意,将从 0 开始的连续整数映射到字母的字典并不是那么有效;你不妨把它列成一个清单:

num_to_letter = [chr(65 + i) for i in range(4)]

这仍然映射 0'A'1'B',等等,但是没有散列步骤。