是他们创建列表列表而不是逐行检查的更好方法

时间:2019-04-26 10:24:14

标签: python

inp_str1 = 'why are you still using cycle. Happy ride.'

inp_str2 = 'happy,cycle'

输出:

['happy', [Happy ride], 'cycle', ['why are you still using cycle']]

获得了预期的答案,但是搜索inp_str1的次数为'n'次。 n = inp_str2中的单词数。

inp_str1 = 'why are you still using cycle. Happy ride.'
inp_str2 = 'happy,cycle'

.....

slist = inp_str2.split(',')

    for word in slist:    
        out.append(word)
        for line in inp_str1.split('.'):         
            if (word in line):
                temp.append(line.strip())
            else:
                pass
        out.append(temp); temp=[]

;
   .....
print(out)  

如何在一次迭代中获得相同的结果。 仅在字符串(inp_str1中搜索字符串(inp_str2)中的所有单词一次,并生成上述输出。

1 个答案:

答案 0 :(得分:0)

好的,问题是您正在搜索字词而不是行词的第一个循环中。如果只想检查inp_str1中的每个句子一次,则应先循环检查它。另外,我不太明白为什么您要使用列表而不是字典来输出最终结果,能否请您添加期望的结果。

使用dict输出,代码将如下所示:

out = {search_word: [] for search_word in slist}
for line in inp_str1.split('.'):
    for word in slist:
        if word in line.lower():
            out[word].append(line)

它将生成以下输出:

{'happy': [' Happy ride'], 'cycle': ['why are you still using cycle']}

因此,对于str_2中的每个字符串,您将击中搜索字符串中的每个句子一次,而inp_str1中的每个单词将击中一次。

如果确定需要列表作为输出,则只需在新的内部循环中复制附加命令即可。

希望会有所帮助