tengo una marca de tiempo de fecha y hora Python y un diccionario grande (índice) donde las claves son marcas de tiempo y los valores son alguna otra información que me interesaPython -. Localización de la marca de tiempo más cercano
Tengo que encontrar la fecha y hora (la clave) en el índice más cercano a la marca de tiempo, de la manera más eficiente posible.
En el momento que estoy haciendo algo como:
for timestamp in timestamps:
closestTimestamp = min(index,key=lambda datetime : abs(timestamp - datetime))
que funciona, pero toma demasiado tiempo - mi índice dict tiene millones de valores, y estoy haciendo los de búsqueda miles de veces. Soy flexible con las estructuras de datos y demás, las indicaciones de tiempo son más o menos secuenciales, de modo que estoy iterando desde la primera hasta la última marca de tiempo. Del mismo modo, las marcas de tiempo en el archivo de texto que cargué en el dict son secuenciales.
Cualquier idea para la optimización sería muy apreciada.
¿El dict grande es relativamente estático, o agrega y elimina entradas a menudo? –
El dict es efectivamente completamente estático. – Caligari
Muchas gracias por todas las respuestas útiles. He tenido un poco de juego con las sugerencias y parece que definitivamente podré resolver mi problema, los aumentos de velocidad son enormes. Hora local ahora, así que tendré un poco más de juego mañana y actualizaré con mi implementación final. – Caligari