¿Hay una estructura en Python similar al mapa C ++ STL?

¿Existe una estructura en Python que admita operaciones similares al C++ STL map y la complejidad de las operaciones se corresponde con el C++ STL map ?

Por lo general, dict está lo suficientemente cerca. ¿Qué quieres que no haga?

Si la respuesta es “proporcionar orden”, entonces, ¿qué hay de malo con for k in sorted(d.keys()) ? Usa demasiada memoria, tal vez? Si está haciendo un montón de recorridos ordenados intercalados con inserciones, entonces OK, punto tomado, realmente desea un árbol.

dict es en realidad una tabla hash en lugar de un b-tree. Pero entonces el map no se define como un árbol b, así que no te permite hacer cosas como separar subárboles como un nuevo map , solo tiene las mismas complejidades de rendimiento. Todo lo que realmente debe preocuparse es lo que sucede con el dict cuando hay un gran número de colisiones de hash, pero debe ser bastante raro usar Python en situaciones en las que quiera garantías de rendimiento en el peor de los casos.

Python SortedDict es un mapa similar a C ++ STL. Puedes leer sobre esto aquí o aquí .

SortedDict es un contenedor de pares clave-valor en el que se impone un orden a las claves según su relación ordenada entre sí. Al igual que con el tipo de datos dict incorporado en Python, SortedDict admite inserción, eliminación y búsqueda rápidas por clave.

Creo que el dict de tipo python estándar hará el truco en la mayoría de los casos. La diferencia con el std :: map de C ++ es que el dict se mejora como un mapa hash y el mapa de C ++ está basado en árboles.

Diccionarios de Python [5.5] .

¿Has mirado en los diccionarios de Python ?

Mira módulo bintrees (pip instalar bintrees). Este paquete proporciona los árboles Binary-RedBlack- y AVL-Trees escritos en Python y Cython / C.