我有一个单词列表。它非常大(len(list) ~ 70,000)。我目前正在使用此代码:
replacement = "bla"
for word in data:
if (word in unique_words):
word = replacement
此代码需要一段时间来执行操作。有没有更快的方法来做到这一点?
我有一个单词列表。它非常大(len(list) ~ 70,000)。我目前正在使用此代码:
replacement = "bla"
for word in data:
if (word in unique_words):
word = replacement
此代码需要一段时间来执行操作。有没有更快的方法来做到这一点?
使用一个set
for unique_words
。在确定项目是否在其中时,集合比列表快得多(请参阅Python Sets vs Lists)。
此外,这只是一个风格问题,但我认为您应该删除if
. 它看起来更干净。
您发布的代码实际上并没有做任何替换。这是一个片段:
for key,word in enumerate(data):
if word in unique_words:
data[key] = replacement
这是一种更紧凑的方式:
new_list = [replacement if word in unique_words else word for word in big_list]
考虑到它的用途,我认为unique_words
变量的名称很奇怪,也许应该是search_list
?
编辑:
在您发表评论后,也许这会更好:
from collections import Counter
c = Counter(data)
only_once = [k for k,v in c.iteritems() if v == 1]
# Now replace all occurances of these words with something else
for k, v in enumerate(data):
if v in only_once:
data[k] = replacement