我正在创建一个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
答案 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'
等,但没有散列步骤。