擅长:python、mysql、java
<p>尽管这个方法不是很健壮(例如,您可能会错过“hamburger”),但主要的错误是您没有在迭代器上循环,而是在列表本身上循环。这是一个正确的版本。你知道吗</p>
<p>请注意,我重命名了变量以提供更具表现力的名称,并用一个简单的<code>word in dic</code>替换了dictionary检查,使用了一个示例词汇表-您导入的模块不是标准库的一部分,这使得您的代码对于我们没有它的人来说很难运行。你知道吗</p>
<pre><code>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']
</code></pre>
<p>你需要<code>try ... except</code>部分,以防列表的最后一个单词不在词汇表中,因为在这种情况下<code>next()</code>将引发<code>StopIteration</code>。你知道吗</p>