Несмотря на тот факт, что этот метод не очень надежен (например, вы бы пропустили "Ham-Burger"), основная ошибка заключалась в том, что вы выполняли не цикл в итераторе, а в самом списке.Вот исправленная версия.
Обратите внимание, что я переименовал переменные, чтобы дать им более выразительные имена, и заменил словарную проверку простой word in dic
на словарь-образец - импортируемый вами модуль не является частьюстандартная библиотека, которая делает ваш код сложным для запуска для тех, у кого его нет.
dic = {'love', 'friend', 'car', 'apple',
'computer', 'banana'}
words=['love', 'friend', 'car', 'apple', 'com', 'puter', 'vi']
words_it = iter(words)
valid_words = []
for word in words_it:
if word in dic:
valid_words.append(word)
else:
try:
concacenated = word + next(words_it)
if concacenated in dic:
valid_words.append(concacenated)
except StopIteration:
pass
print (valid_words)
# ['love', 'friend', 'car', 'apple', 'computer']
Вам нужна часть try ... except
, если последнее слово в списке отсутствуетсловарь, так как next()
будет поднимать StopIteration
в этом случае.