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