繁体   English   中英

一行用于python中的循环搜索

[英]One line for loop search in python

我知道这可能可以在一行中完成,这很简单,但是我在语法上一直失败。 我要执行以下操作:

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中做到这一点?

如果要获取第一个令人满意的标签然后停止,请使用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]

您缺少方括号, 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM