如何在python中执行此列表/字典理解

时间:2015-07-23 17:05:33

标签: python dictionary list-comprehension

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

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

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

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

l = [0, 1]

现在我要做的是创建另一个列表,其中包含与这些键对应的值,我想知道是否有使用list或dict comprehensions的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

1 个答案:

答案 0 :(得分:3)

您希望迭代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'等,但没有散列步骤。