在python中循环搜索的一行

时间:2014-09-16 20:26:00

标签: python if-statement for-loop

我知道这可以在一行中完成,而且非常简单,但我仍然在语法上失败。我想做以下事情:

for tag in TAGS.values():
    if tag in myset:
       found_tag = tag
       break

我尝试过像

这样的事情
found_tag = tag if tag in myset for tag in TAGS.values()

但我一直在for上遇到语法错误。在python中有一种单行方式吗?

2 个答案:

答案 0 :(得分:4)

如果您想获得第一个满意的标签然后停止,请使用next

found_tag = next((tag for tag in TAGS.values() if tag in myset), None)

如果找不到这样的标签,这将给None

如果您想获得所有匹配的标签,可以这样做:

found_tags = [tag for tag in TAGS.values() if tag in myset]

答案 1 :(得分:1)

您缺少方括号,if最好放在最后。尝试:

found_tag = [tag for tag in TAGS.values() if tag in myset]

另一种处理方法是使用set操作(仅当变量尚未设置时才需要使用set()构造函数):

found_tag = (set(TAGS.values()) & set(myset))

如果只有一个项目,您可以使用.pop()获取唯一项目:

found_tag = (set(TAGS.values()) & set(myset)).pop()