使用其他列表中的关键词搜索列表?
假设我有这样一个列表
some_list = [
"red apple",
"red banana",
"house is green",
"blue road",
"blue hat"
]
我想在另一个列表中指定我的关键词。
search_strings = ["red", "green"]
有没有办法在不进行太多循环的情况下得到最终结果呢?
# search some_list using keywords from search_strings
red = ["red apple", "red bana"]
green = ["house is green"]
2 个回答
2
下面这些问题中的一些答案可以用来帮助你解决问题:
• python: 在一个列表中查找字符串,然后把整个列表的内容添加到一个新列表中,
• 在一个列表中查找任意单词或单词组合(python),
• 如何在Python 2中查找一个字符串列表中的字符串,
• 删除与另一个列表中任何条目匹配的列表项,
• 在一个字符串列表中查找另一个列表中的任何子字符串,
• Python: 从另一个文本文件中查找列在一个文件中的字符串?,
• 如果字符串不包含Python中的任何字符串列表
这些问题的答案中包含了各种循环或列表推导的技巧(就像phg对当前问题的回答),还有一些filter
的示例,你可能会觉得很有用。
1
[[words for words in some_list if kw in words.split()] for kw in search_strings]
这会给你:
[['red apple', 'red banana'], ['house is green']]
另外,如果some_list
里的“句子”或者search_strings
的长度变得更大,转换成集合可能会更划算(比如search_strings = set(search_strings)
)。