我试图用标签替换更大列表(300万个元素)中的许多元素(大约40k)。下面的代码有效,但是它非常慢。

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]


在这么大的列表中,有没有更有效的方法来替换元素?

最佳答案

您可以改为设置wordsToBeReplaced,以便平均可以在恒定时间而不是线性时间进行查找:

def UNKWords(words):
    return {word for word, count in Counter(words).items() if count == 1}

关于python - 替换长列表Python中的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60531940/

10-12 19:37