在列表理解中插入用户输入



我正在使用NLTK,我想找到所有包含给定关键字集的句子。例如,当前为[x for x in tokenized_sent if 'key_word1' and 'key_word2' and 'key_word3' in x]。我想设置它,以便用户可以输入任意数量的单词,然后可以将这些单词设置为等于这些由and分隔的关键字。

我尝试过通过编写[x for x in tokenized_sent if user_input_list[0] and user_input_list[1] in x]来插入user_input_list = ['key_word1','key_word2'],这很有效,但必须有更好的方法,尤其是处理任何给定数量的单词的方法。谢谢

您可以使用集合子集。将用户输入列表设置为一组,看看它是否是关键字的子集。

[x for x in tokenized_sent if set(user_input_list).issubset(x)]

我认为您可以使用all-关键字:

[words for words in tokenized_sent if all([keyword in words for keyword in keywords])]

注意:结果中的第一个-语句是布尔值,而第二个用于从列表中获取元素。

使用filterall方法:

list(filter(lambda x: all(key in x for key in user_input_list), tokenized_sent))

最新更新