擅长:python、mysql、java
<p>首先要注意的是,要实现相同长度的输入和输出列表,应该在列表上循环,而不是在字典上循环</p>
<pre><code>ys = [k for x in xs for k, v in d.items() if x in v]
</code></pre>
<hr/>
<p>另一种方法是构造反向映射。这将使事情逐渐加快:</p>
<pre><code>lookup = {x: k for k, v in d.items() for x in v}
>>> lookup
{
'bay': 'boy',
'boy': 'boy',
'buoy': 'boy',
'caat': 'cat',
'cat': 'cat',
'cut': 'cat',
'man': 'man',
'men': 'man',
'mun': 'man',
}
</code></pre>
<p>然后,简单地说:</p>
<pre><code>ys = [lookup[x] for x in xs]
</code></pre>