Nunca pensé que me encontraría con problemas de velocidad con Python, pero lo hice. Estoy tratando de comparar realmente grandes listas de diccionarios entre sí en función de los valores del diccionario. Comparo dos listas, con la primera como talComparando listas masivas de diccionarios en python
biglist1=[{'transaction':'somevalue', 'id':'somevalue', 'date':'somevalue' ...}, {'transactio':'somevalue', 'id':'somevalue', 'date':'somevalue' ...}, ...]
Con 'somevalue' de pie para una cadena generado por el usuario, int o decimal. Ahora, la segunda lista es bastante similar, excepto que los valores de id siempre están vacíos, ya que aún no se han asignado.
biglist2=[{'transaction':'somevalue', 'id':'', 'date':'somevalue' ...}, {'transactio':'somevalue', 'id':'', 'date':'somevalue' ...}, ...]
por lo que quiero obtener una lista de los diccionarios en biglist2 que coinciden con los diccionarios en biglist1 para todas las otras teclas excepto ID.
que he estado haciendo
for item in biglist2:
for transaction in biglist1:
if item['transaction'] == transaction['transaction']:
list_transactionnamematches.append(transaction)
for item in biglist2:
for transaction in list_transactionnamematches:
if item['date'] == transaction['date']:
list_transactionnamematches.append(transaction)
... y así sucesivamente, no comparando los valores de ID, hasta que consiga una lista final de los partidos. Dado que las listas pueden ser realmente grandes (alrededor de más de 3000 elementos cada una), Python necesita bastante tiempo para recorrerlas.
Supongo que no es así como se debe hacer este tipo de comparación. ¿Algunas ideas?
"si a en b:" es una operación de búsqueda, que no es tiempo constante.En efecto, esto sigue siendo O (m * n) suponiendo que una búsqueda de tuplas es lineal. – codelogic
Esa es una mala suposición, porque no lo es. Es una búsqueda de hashtable. – recursive
Más información: la implementación del diccionario de Python reduce la complejidad promedio de las búsquedas de diccionario a O (1) http://wiki.python.org/moin/DictionaryKeys – recursive