如何像列表理解一样在一行中编写if-else语句,但使用python只返回一个值



我正在处理一个函数,在一个变量中,我需要一个值而不是列表。

我使用了以下

value = project_list[0] if pathname=='/london' else project_list[1] if pathname=='/frankfurt'

但是我得到了SyntaxError,我应该做些什么不同的事情呢?

我建议您多行编写,以提高可读性。

...
if pathname == '/london':
value = project_list[0]
elif pathname == '/frankfurt':
value = project_list[1]
...

如果你仍然希望它是单行的,你可以这样做(由黑色格式化(:

value = (
project_list[0]
if pathname == "/london"
else project_list[1]
if pathname == "/frankfurt"
else something
)

示例:

pathname = '/london'
project_list = ['zero', 'first', 'second']
value = (
project_list[0]
if pathname == "/london"
else project_list[1]
if pathname == "/frankfurt"
else project_list[2]
)
print(value)

输出->zero

使用如下字典-这比嵌套条件更可读

value = {'/london' : project_list[0], '/franckfurt' : project_list[1]}.get(pathname)

您可以再添加一个来完成该语句。

project_list = ['X', 'Y']
pathname = '/london'
value = project_list[0] if pathname=='/london' else project_list[1] if (pathname=='/frankfurt') else ''
print(value)

最新更新