查找包含其他列表中所有单词的列表中的句子

2024-04-29 15:53:29 发布

您现在位置:Python中文网/ 问答频道 /正文

给定两个列表:list1包含句子和list2包含单词,我想找到list1的句子中所有单词都属于list2

list1 = ['p jthputmxy xpih t zdamz', 'l kefylcbfl tpij p jonvs', 'c olqlyfxew ksah p opjto', 'o cbfolbbwa fcha b xcruo', 'x iirvablmi dvqg i jjguy', 'c ocqlyfoew ksrh p opato', 'n cyjelcxxy xlip t kvrks', 'l kajltafti egei a bzzts', 'p ctjpltfxa xgia t bdrms', 'a cavalaria esta a norte']

list2 =  ['atacar', 'esperar', 'noite', 'base', 'sul', 'norte', 'cavalaria', 'esta', 'a', 'pato']

所需输出=[False, False, False, False, False, False, False, False, False, True]

到目前为止,我的代码是:

test = [all(i for i in list2) for f in list1]
return test

仅返回:

[True, True, True, True, True, True, True, True, True, True]

Tags: intestfalsetrue列表for单词句子
3条回答
list1=['p jthputmxy xpih t zdamz', 'l kefylcbfl tpij p jonvs', 'c olqlyfxew ksah p opjto', 'o cbfolbbwa fcha b xcruo', 'x iirvablmi dvqg i jjguy', 'c ocqlyfoew ksrh p opato', 'n cyjelcxxy xlip t kvrks', 'l kajltafti egei a bzzts', 'p ctjpltfxa xgia t bdrms', 'a cavalaria esta a norte']
list2=['atacar', 'esperar', 'noite', 'base', 'sul',
    'norte', 'cavalaria', 'esta', 'a', 'pato']

results=[]
for i in list2:
    isin=False
    for l1item in list1:
        if i in l1item:
            isin=True
    results.append(isin)
results

这将返回以下输出(这对我来说很有意义)

[False, False, False, False, False, True, True, True, True, True]

如果变量也是字符串,则all()函数返回True。这就是为什么你得到的都是真的,因为在列表1中,到处都有一个字符串

所以您的意思是test=[对于列表1中的f为True]

您可以将list2转换为一个集合,并检查由句子中的单词组成的集合是否是您的单词集合的子集

>>> wordset = set(list2)
>>> res = [set(sentence.split()) <= wordset  for sentence in list1]
>>> res
[False, False, False, False, False, False, False, False, False, True]

相关问题 更多 >