我知道这可以在一行中完成,而且非常简单,但我仍然在语法上失败。我想做以下事情:
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中有一种单行方式吗?
答案 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()