Search for words from a list in a Python string

There is a list of words, such as:

animalslist=['кот', 'собака', 'олень', 'тюлень']

600+ words long

There is a string entered by the user in the form:

message='Какой либо текст олень какой либо текст'

What is the most effective way to find out if a string contains words from the list

The length of the string is not known in advance

Author: Anon, 2020-03-24

3 answers

if set(animalslist) & set(message.split()):
    print('В строке есть слова из списка')
 1
Author: Sergey Gornostaev, 2020-03-24 18:01:28
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])
 0
Author: vadim vaduxa, 2020-03-24 18:23:15

It should be a little faster (if the time in your case can be taken as an efficiency criterion) to work when so (cool option from vadim vaduxa):

animalslist = ['кот', 'собака', 'олень', 'тюлень']
message = 'Какой либо текст олень какой либо кот текст олень'.split()
sm = set(message)

print([f'{word} == {message.count(word)}' for word in animalslist if word in sm])
# ['кот == 1', 'олень == 2']
 0
Author: Serzhev, 2020-03-24 19:32:15