Python:快速替换列表中所有特定单词的出现?

时间:2012-05-26 13:07:43

标签: python

我有一个单词列表。它非常大(len(列表)~70,000)。 我目前正在使用此代码:

replacement = "bla"
for word in data:
    if (word in unique_words):
        word = replacement

此代码执行执行操作。有更快的方法吗?

2 个答案:

答案 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