python - Any 和 All 将 2d 关键字列表与字符串进行比较
问题描述
到目前为止我已经得到了这个,但我的目标是检查字符串中是否有任何嵌套的 ALL 关键字列表。
目前,如果嵌套列表中包含与关键字匹配的任何元素的任何嵌套列表,我都会收到。
如何修改它以输出布尔值或显示任何嵌套列表,但嵌套列表的所有元素都与字符串匹配。
keyword_list = [
[
'purple',
'sp',
'blue'
],
[
'splash',
'rocky'
],
[
'nike',
'sacai'
]
]
product = "sport apples drinks water banana"
if any([keyword for keyword in keywords if (keyword in str(product).lower())] for keywords in keyword_list) == True:
print(list([keyword for keyword in keywords if (keyword in str(product).lower())] for keywords in keyword_list))
这是简化版本,虽然有效,但我只是想知道任何更快的方法。
keyword_list = [
[
'purple',
'sp',
'blue'
],
[
'splash',
'rocky'
],
[
'nike',
'dr'
]
]
product = str("sport apples drinks water banana").lower()
def match(product):
for keywords in keyword_list:
keyword_match = 0
for keyword in keywords:
if keyword in product:
keyword_match += 1
if keyword_match == len(keywords):
return True
if match(product) == True:
print('Yes')
else:
print('No')
解决方案
用any()
作主循环和all()
内循环。
def match(product):
return any(all(keyword in product for keyword in keywords) for keywords in keyword_list)
match('sport apples drinks water banana') // False
match('blues purple sport rocky') // True
推荐阅读
- c# - UWP C# 项目中的 HTTP 重定向请求失败
- javascript - 在 Firefox 中通过 AJAX 加载非 XML 数据时出现“XML 解析错误”
- java - 使用 Spring 反序列化请求时如何处理动态 JSON 值类型?
- python - 为什么我会收到错误“NameError: name 'kh' is not defined”
- c - c语言中的JOIN函数,valgrind问题
- git - SmartGit 提交地址
- unity3d - 为什么只有在相机靠近时才能听到此音频源?
- c - 如何获取每行中的字符数?
- gradle - 覆盖 gradle 子项目中的存储库定义
- c++ - 相邻差异与 pre 和 next 一起使用