Python: como verificar se um item está em uma lista com eficiência?

Eu tenho uma lista de strings (palavras como), e, enquanto eu estou analisando um texto, eu preciso verificar se uma palavra pertence ao grupo de palavras da minha lista atual.

No entanto, minha entrada é muito grande (cerca de 600 milhões de linhas), e verificar se um elemento pertence a uma lista é uma operação O (n) de acordo com a documentação do Python.

Meu código é algo como:

words_in_line = []
for word in line:
    if word in my_list:
        words_in_line.append(word)

Como leva muito tempo (dias, na verdade), eu queria melhorar a parte que está tomando a maior parte do tempo. Eu dou uma olhada nas coleções do Python e, mais precisamente, no deque. No entanto, o único acesso de tempo de operação O (1) à cabeça e à cauda de uma lista, não no meio.

Alguém tem uma ideia sobre como fazer isso de uma maneira melhor?

questionAnswers(4)

yourAnswerToTheQuestion