<p>我试图用一个标记替换一个更大的列表(300万个元素)中的一些元素(大约40k)。下面的代码可以工作,但是速度非常慢</p>
<pre class="lang-py prettyprint-override"><code>def UNKWords(words):
words = Counter(words)
wordsToBeReplaced = []
for key, value in words.items():
if(value == 1):
wordsToBeReplaced.append(key)
return wordsToBeReplaced
wordsToBeReplaced = UNKWords(trainingWords)
replacedWordsList = ["<UNK>" if word in wordsToBeReplaced else word for word in trainingWords]
</code></pre>
<p>有没有更有效的方法来替换这么大的列表中的元素</p>
<p>您可以将<code>wordsToBeReplaced</code>设置为一个集合,这样可以在平均恒定时间而不是线性时间内进行查找:</p>
<pre><code>def UNKWords(words):
return {word for word, count in Counter(words).items() if count == 1}
</code></pre>