【问题标题】:Why can I not have `else` (from if / else) with python generator expressions?为什么我不能在 python 生成器表达式中使用 `else`(来自 if / else)?
【发布时间】:2021-03-19 21:21:36
【问题描述】:

我有以下代码,可以正常工作:

incl_list = ['A']
my_list = [{'A': 1, 'B': 'world'}, {'A': 4, 'B': 'hello'}]
result = '\n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list) for record in my_list)

结果产生:

'A=1\nA=4'

我的问题是为什么我不能像这样添加else 语句:

result = '\n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list) else 'ignore' for record in my_list)

类似于列表理解?

我得到的错误是:

 File "<ipython-input-276-201c8f88ac13>", line 1
    result = '\n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list else 'ignore') for record in my_list)
                                                                                                         ^
SyntaxError: invalid syntax

【问题讨论】:

  • 出现任何错误?
  • 你可以使用a if b else c for d in e,而不是你想要做的任何事情。
  • @zixuan 我已经更新了。
  • @Newskooler 我建议仔细检查一下。那不是你正在做的事情。
  • @khelwood 你确实是对的。为我的困惑道歉。嵌套如此之多,有时很难跟踪。

标签: python list-comprehension generator-expression


【解决方案1】:

您的else 语句需要与if 语句一起使用,当在推导中使用时,您可以像这样修改您的代码以使其工作

result = '\n'.join(','.join(f'{key}={value}' if key in incl_list else 'ignore' for key, value in record.items()) for record in my_list)

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 2021-02-20
    • 2011-02-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2014-11-04
    相关资源
    最近更新 更多