вам будет лучше разделить ваше предложение, а затем считать слова, а не подстроки:
textt="When I was One I had just begun When I was Two I was nearly new"
wwords=['i', 'was', 'three', 'near']
text_words = textt.lower().split()
result = {w:text_words.count(w) for w in wwords}
print(result)
печать:
{'three': 0, 'i': 4, 'near': 0, 'was': 3}
если в тексте теперь есть знаки препинания, вам лучше использовать регулярные выражения, чтобы разбить строку в соответствии с не алфавитом:
import re
textt="When I was One, I had just begun.I was Two when I was nearly new"
wwords=['i', 'was', 'three', 'near']
text_words = re.split("\W+",textt.lower())
result = {w:text_words.count(w) for w in wwords}
результат:
{'was': 3, 'near': 0, 'three': 0, 'i': 4}
(другая альтернатива - использовать findall
на словах: text_words = re.findall(r"\w+",textt.lower())
)
Теперь, если ваш список "важных" слов большой, возможно, лучше подсчитать все слов и отфильтровать их, используя классические collections.Counter
:
text_words = collections.Counter(re.split("\W+",textt.lower()))
result = {w:text_words.get(w) for w in wwords}