Ваш фрагмент функционален. См. Например
>>> refDict = {'alpha':1, 'bravo':2, 'charlie':3, 'delta':4}
>>> s = 'he said bravo to charlie O\'Brian and jack Alpha'
>>> for word in s.split():
... if word not in refDict:
... print(repr(word)) # by temporarily using repr() we can see exactly
... # what the words are like
...
'he'
'said'
'to'
"O'Brian"
'and'
'jack'
'Alpha' # note how Alpha was not found in refDict (u/l case difference)
Следовательно, содержимое словаря должно отличаться от того, что вы думаете, или слова из контрольного списка не являются точно такими, какими они появляются (например, с пробелами или заглавными буквами; см. Использование repr () (* ) в печатном заявлении, чтобы помочь идентифицировать случаи первого).
Предложение по отладке: ФОКУСИРУЙТЕ первое слово из контрольного списка (или первое, которое вы подозреваете, находится в словаре). Затем для этого слова и только для этого слова выведите его подробно, по длине, со скобками с обеих сторон и т. Д., Как для слова вне контрольного списка, так и для соответствующего ключа в словаре ...
(*) repr () было предложено Джоном Мачином. Вместо этого я часто использую скобки или другие символы, как при печати ('[' + word + ']'), но repr () более точен в выводе.