Python 在列表中搜索多个单词

我有这样的 Python 列表:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']

现在我想在我的列表中搜索多个关键字,例如:

当我尝试输入关键字老师销售时

input keywords: teacher sales

它应该返回这样的结果:

  • 教师

  • 数学老师

  • 销售员

  • 销售经理

到目前为止,我已经制作了这样的代码:

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']


def search_multiple_words(search_words):

    search_words = [search_words]


    for line in job_list:

        if any(word in line for word in search_words):

            print(line)


search_words = input("input keywords: ")

search_multiple_words(search_words)

但它只在我输入一个关键字时才有效,而不是像我上面给出的示例那样输入多个关键字。


那么,如何做到这一点..?


呼如林
浏览 329回答 3
3回答

长风秋雁

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager',            'sales manager', 'schoolteacher', 'mathematics teacher']def search_multiple_words(search_words):    search_words = search_words.split(' ')    out = [s for s in job_list if any(xs in s for xs in search_words)]    print(out)search_words = input("input words: ")search_multiple_words(search_words)

汪汪一只猫

你可以试试这个job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager',             'sales manager', 'schoolteacher', 'mathematics teacher']def search_multiple_words(search_words):    search_words = [search_words]    for line in job_list:        if any(word in line for word in search_words):            print(line)search_words = input("input keywords: ").split(' ')for w in search_words:    search_multiple_words(w)输出:input keywords: sales teachersalespersonsales managerschoolteachermathematics teacher

慕妹3146593

您可以使用find()方法。这应该适合你:lis=['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']str1 = ["teacher", "sales"]x=[]for y in lis:    for string in str1:        if y.find(string) != -1:            x.append(y)上面的代码是为了可读性和可理解性。但是,它可以使用如下列表推导式压缩成一个很好的单行:x = [y for y in lis for string in str1 if y.find(string) != -1]两者都做同样的事情并给出这样的输出['销售员'、'销售经理'、'学校老师'、'数学老师']祝你好运!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python