Tengo un archivo que contiene aproximadamente todas las palabras en inglés (~ 60k palabras, ~ 500k caracteres). Quiero probar si una determinada palabra que recibo como entrada es "en inglés" (es decir, si esta palabra exacta está en la lista).Forma más eficiente de encontrar si una lista grande contiene una cadena específica (Python)
¿Cuál sería la forma más eficiente de hacer esto en Python?
La solución trivial es cargar el archivo en una lista y verificar si la palabra está en esa lista. La lista se puede ordenar, lo que creo que reducirá la complejidad a O (logn). Sin embargo, no estoy seguro de cómo Python implementa la búsqueda a través de listas, y si hay una penalización de rendimiento si una lista tan grande está en la memoria. ¿Puedo "abusar" del hecho de que puedo ponerle un límite a la longitud de las palabras? (por ejemplo, decir que el más largo tiene 15 caracteres de longitud).
Tenga en cuenta que ejecuto la aplicación en una máquina con mucha memoria, por lo que me importa menos el consumo de memoria que la velocidad y la utilización de la CPU.
Gracias
¿Esperaría alguna diferencia de velocidad entre set y frozenset? –
Tenga en cuenta que la mejora al cambiar a 'conjunto 'puede ser enorme. En mi caso, comprobar 1000 veces si un elemento pertenecía a una lista de 270,000 elementos sin duplicados tomó alrededor de 20-25 segundos. Comprobar si pertenece a un conjunto toma solo alrededor de 0.005 segundos. – J0ANMM