Поиск слов из списка в строке Python
Есть список слов, вида:
animalslist=['кот', 'собака', 'олень', 'тюлень']
длинною в 600+ слов
Имеется строка, введённая пользователем, вида:
message='Какой либо текст олень какой либо текст'
Как эффективнее всего можно узнать, имеются ли в строке слова из списка
Длина строки заранее не известна
Ответы (3 шт):
Автор решения: Sergey Gornostaev
→ Ссылка
if set(animalslist) & set(message.split()):
print('В строке есть слова из списка')
Автор решения: vadim vaduxa
→ Ссылка
animalslist = ['кот', 'собака', 'олень', 'тюлень']
message = 'Какой либо текст олень какой либо кот текст олень'.split()
sm = set(message)
# ['олень', 'кот']
print([a for a in sm if a in animalslist])
# ['кот=1', 'олень=2']
print([f'{a}={c}' for a, c in ([a, message.count(a)] for a in animalslist if a in sm) if c])
Автор решения: Serzhev
→ Ссылка
Должно немного быстрее (если время в вашем случаем можно принять за критерий эффективности) работать, когда так (крутой вариант от vadim vaduxa):
animalslist = ['кот', 'собака', 'олень', 'тюлень']
message = 'Какой либо текст олень какой либо кот текст олень'.split()
sm = set(message)
print([f'{word} == {message.count(word)}' for word in animalslist if word in sm])
# ['кот == 1', 'олень == 2']