使用except跳过for循环

时间:2018-11-06 11:48:53

标签: python dictionary for-loop syntax

所以我正在使用通过以下功能向系统添加组件的函数:

es.add(components[i][0] for i in components.keys())

components是一个python字典,看起来像这样:

components = {'a': (a0, a1),
              'b': (b0, None)}

我正在尝试实现的目的是我想使用for-loop运行上述except,如果add()无法运行components函数字典给出None

我尝试过的事情:

es.add(components[i][1] for i in components.keys() except None)

Ofc给出语法错误。它的语法是什么?


示例:

es.add(components[i][1] for i in components.keys())

以上等于:

es.add(a1)
es.add(None)

我想以仅添加a1并跳过None的方式编写for循环。

2 个答案:

答案 0 :(得分:0)

我认为它就像[components[i][1] for i in components.keys() if type(components[i][1]) != type(None)]

以便下面的代码可以正常工作

es.add(components[i][1] for i in components.keys() if type(components[i][1]) != type(None))

答案 1 :(得分:0)

使用if条件,因为在这种情况下except没有用。您还可以通过直接迭代dict.values()使其更短,更易读:

es.add(x for _, x in components.values() if x is not None)