擅长:python、mysql、java
<p>如果找到匹配项,则需要从循环中<code>break</code>,并且仅当未找到匹配项时才将其设置为<code>No</code>。像这样:</p>
<pre><code>dico = {}
listo = ['med', 'lam', 'rih', 'holy', 'lem']
mm = ['med', 'holy']
for i, v in enumerate(listo):
for x in mm:
if x in v:
dico[i] = x
break
else:
dico[i] = 'No'
print(dico)
</code></pre>
<p>输出:</p>
<pre><code>{0: 'med', 1: 'No', 2: 'No', 3: 'holy', 4: 'No'}
</code></pre>
<p>您遇到的问题是,由于没有从内部<code>for</code>循环中断,因此在您已经编写了<code>'med'</code>之后,在以后的迭代中用<code>'No'</code>覆盖<code>dico[0]</code></p>
<p>(注意此处<code>else</code>的缩进-它伴随<code>for</code>而不是<code>if</code>。)</p>