如何在Python列表推导式中添加多个搜索参数查询子列表?
问题解决方法
错误原因分析
- 关键词列表定义错误:你把
entities写成了二维列表[["Entity", ...]],导致in操作的左操作数是列表类型,不符合语法要求(判断字符串包含关系时,in左侧必须是字符串)。 - 判断逻辑错误:你需要检查目标元素中是否存在任意一个关键词,而非判断整个关键词列表是否是目标元素的成员。
修正后的代码
先将entities改为一维关键词列表,再用any()函数实现多关键词匹配:
# 修正关键词列表为一维结构 entities = ["Entity","Entity with some","Entity with audition"] # 筛选包含任意一个关键词的元素 y2 = [x for x in y2 if any(keyword in x for keyword in entities)]
扩展说明
- 如果需要筛选包含所有关键词的元素,只需把
any()替换为all():y2 = [x for x in y2 if all(keyword in x for keyword in entities)] - 若你的
y2是子列表组成的列表(比如[["a", "Entity"], ["b", "test"]]),上述代码同样适用,因为keyword in x会自动检查子列表x中是否包含该关键词。
内容的提问来源于stack exchange,提问作者Sebastian H.
相关产品推荐
相关产品推荐

