如何判断列表中是否存在含指定子串的元素并返回布尔值
如何判断issues的标签列表中是否存在含特定子串的元素?
你的问题出在原来的判断逻辑上:"customer:" in item['fields']['labels']是在检查完整的字符串"customer:"是否是labels列表中的元素,而不是检查列表里有没有元素包含"customer:"这个子串。
要实现你要的逻辑,我们可以用Python的any()函数来遍历每个标签,判断是否有标签包含目标子串,修改后的代码如下:
def grab_data(self, data): created_values = [ (item['id'], any("customer:" in label for label in item['fields']['labels'])) for item in data['issues'] ]
代码解释:
any()函数会遍历item['fields']['labels']中的每一个标签,只要有任意一个标签满足"customer:" in label(即标签包含该子串),就会返回True;如果所有标签都不满足,则返回False。- 这样处理后,对应id1、3的issues会返回
True,id2返回False,完全符合你的预期结果。
如果你更习惯用生成器表达式(和你原来的写法风格一致),也可以写成:
def grab_data(self, data): created_values = list( (item['id'], any("customer:" in label for label in item['fields']['labels'])) for item in data['issues'] )
内容的提问来源于stack exchange,提问作者Mfreeman
相关产品推荐
相关产品推荐

