我有一个列表,其中包含几个键和值,每个键和值都有自己的关键字存储在其中。为了只返回列表中的特定项目,我将以下 for 循环与 if 语句一起使用:reduced_docs = []for arg in reduced_docs: if 'amazon' in arg[1] and 'google' in arg[1]: print(arg[0])上面的代码将返回列表中包含单词 amazon 和 google 的所有项目。这有效,但正如你所看到的,它现在是硬编码的,我会这样: reduced_docs = [] keyword = input('enter your keywords:') keyword1 keyword2 for arg in reduced_docs: if keyword in arg[1] and keyword in arg[1]: print(arg[0])正如您在上面的示例代码中看到的那样,它不再是硬编码的,但是如果我有 3 个关键字或 4 个或 5 个关键字呢?我需要做什么来创建一个动态的 if 语句,and根据输入的长度添加条件?到目前为止,我无法理解这一点。
2 回答

慕哥9229398
TA贡献1877条经验 获得超6个赞
您可以向用户询问逗号分隔的关键字,然后使用类似
reduced_docs = []
keywords = input('enter your keywords comma separated:')
for arg in reduced_docs:
to_print = []
for keyword in keywords.split(","):
to_print.append(keyword in arg[0])
if all(to_print):
print(arg[1])

素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
all(iterable)True如果 的所有元素iterable都为真,则返回。
一起使用生成器表达式:
keywords = input('enter your keywords:').split()
for arg in reduced_docs:
if all(keyword in arg[1] for keyword in keywords):
print(arg[0])
添加回答
举报
0/150
提交
取消