我有一个单词列表。它非常大(len(列表)~70,000)。 我目前正在使用此代码:
replacement = "bla"
for word in data:
if (word in unique_words):
word = replacement
此代码执行而执行操作。有更快的方法吗?
答案 0 :(得分:6)
set
使用unique_words
。集合比确定项目是否在其中的列表要快得多(参见Python Sets vs Lists)。
此外,这只是一个风格问题,但我认为你应该删除if
中的括号。它看起来更干净。
答案 1 :(得分:4)
您发布的代码实际上并未进行任何替换。这是一个片段:
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