2010-09-24 20 views
5

He llegado a apreciar mucho boost :: multi_index en C++. Sucede que felizmente usaría algo así en Python; para scripts que procesan datos que provienen de aplicaciones numéricas intensivas. ¿Hay algo así para Python? Solo quiero asegurarme de que no exista, entonces trataré de implementarlo yo mismo. Cosas que no lo harán por mí:Algo así como boost :: multi_index para Python

  • Wrapping boost :: multi_index en Python. Simplemente no escala.

  • Uso de sqlite3 en la memoria. Es feo

+0

Esta respuesta está algo relacionada: http://stackoverflow.com/questions/3070598/is-there-an-equivalent-of-boostmulti-index-for-java-someplace/3642996#3642996 – Gunslinger47

+0

Se da una implementación en https://stackoverflow.com/a/2296976/3142913 –

Respuesta

1

Para responder a su pregunta de si existe algo similar en Python, diría que no.

Una característica útil de Boost.MultiIndex es que los elementos se pueden modificar in situ (mediante replace() o modify()). El dict nativo de Python no proporciona esa funcionalidad y requiere que la clave sea inmutable. No he visto otras implementaciones que permitan alterar la clave. Entonces, en esta área específica, no hay nada comparable como Boost.MultiIndex en Python.

Si solo necesita varias vistas estáticas de sus datos, entonces estaría de acuerdo con Radomir Dopieralski. Puede ajustar múltiples dicts en su propia clase para proporcionar una API unificada para garantizar la sincronización entre diferentes vistas. No sé a qué te refieres con "transformaciones con reconocimiento de rendimiento", pero si hablabas de la complejidad computacional de las operaciones de inserción/eliminación, incluso con Boost.MultiIndex, "insertar un elemento en un contenedor_consejo_múltiple se reduce a una combinación simple de operaciones elementales de inserción en cada uno de los índices, y de manera similar para la eliminación ".

+0

Sí, un año y entonces, después de hacer esta pregunta, sospecho mucho de esto. Sin embargo, también he aprendido que hay suficiente diversidad en el zoológico de bases de datos compatibles con Python que uno de ellos podría resolver el problema. – dsign

2

Desde colecciones únicas referencias pitón tienda para objetos, no los objetos mismos, theres no hay mucha diferencia entre tener una colección con múltiples esquemas de indexación, y sólo tener varias colecciones.

Por ejemplo, puede tener varios dicts con sus datos, cada uno de ellos utilizando diferentes claves para referirse a ellos.

+1

Yeap, pero eso deja fuera un montón de cuestiones importantes: sincronización entre diferentes índices bajo operaciones de modificaciones, proyección de iterador, transformaciones con reconocimiento de rendimiento ... – dsign

Cuestiones relacionadas