在python中使用列表理解从另一个列表生成列表

2024-04-29 05:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遍历一个列表并生成另一个列表。使用列表理解可以实现这一点吗

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]

我做错什么了吗?我们如何做到这一点


Tags: innonesource列表forportmydef
2条回答
my_list = [port_hdl_dict.get(v) for v in source]

生成列表或从列表生成另一个iterable结构是列表理解的最佳用例之一。代码的问题是append操作没有返回任何内容。因为这就是你在my_list中存储的内容,当你打印my_list时,你会得到[None, None, None]

此外,在我看来,您实际上要做的是从字典中获取给定键集的所有值

您可以通过在列表理解中返回字典中的值,而不是使用附加到的第三个列表来实现这一点,例如:

my_list = [port_hdl_dict[i] for i in source]

以上是一个没有验证的非常简单的例子。因此,例如,如果i不是port_hdl_dict内的有效键,那么代码将引发异常。 只需检查i是否在port_hdl_dict中,就可以添加一些简单的验证

my_list = [port_hdl_dict[i] for i in source if i in port_hdl_dict]

相关问题 更多 >