我试图遍历一个列表并生成另一个列表。使用列表理解可以实现这一点吗
source = ['1/2','1/3','1/4']
port_hdl_dict = {'1/2':'1/1/2','1/3':'1/1/3','1/4':'1/1/4','1/5':'1/1/5'}
def getSourcePortlistIxia(source_list,port_hdl_dict):
source_port_list = []
for i in source_list:
source_port_list.append(port_hdl_dict[i])
return(source_port_list)
res = getSourcePortlistIxia(source,port_hdl_dict)
print(res)
我试着用我的理解力来实现这一点
source_port_list = []
my_list = [source_port_list.append(port_hdl_dict[i]) for i in source]
print(my_list)
但这会将输出打印为
['1/1/2', '1/1/3', '1/1/4']
[None, None, None]
我做错什么了吗?我们如何做到这一点
生成列表或从列表生成另一个iterable结构是列表理解的最佳用例之一。代码的问题是
append
操作没有返回任何内容。因为这就是你在my_list
中存储的内容,当你打印my_list
时,你会得到[None, None, None]
此外,在我看来,您实际上要做的是从字典中获取给定键集的所有值
您可以通过在列表理解中返回字典中的值,而不是使用附加到的第三个列表来实现这一点,例如:
以上是一个没有验证的非常简单的例子。因此,例如,如果
i
不是port_hdl_dict
内的有效键,那么代码将引发异常。 只需检查i
是否在port_hdl_dict
中,就可以添加一些简单的验证相关问题 更多 >
编程相关推荐