¿Hay una estructura en Python
que admite operaciones similares a C++ STL map
y la complejidad de las operaciones corresponde a C++ STL map
?¿Hay una estructura en Python similar al mapa C++ STL?
Respuesta
dict
suele estar lo suficientemente cerca, ¿qué quiere que no funcione?
Si la respuesta es "proporcionar orden", ¿qué pasa realmente con for k in sorted(d.keys())
? Usa demasiada memoria, tal vez? Si está haciendo muchos cruces ordenados intercalados con inserciones, entonces OK, señalado, realmente quiere un árbol.
dict
es en realidad una tabla hash en lugar de un b-tree. Pero entonces map
no es definido para ser un árbol b, por lo que no le permite hacer cosas como separar subárboles como un nuevo map
, simplemente tiene las mismas complejidades de rendimiento. Todo lo que realmente tiene que preocuparse es qué pasa con dict
cuando hay un gran número de colisiones hash, pero debe ser bastante raro usar Python en situaciones en las que se desean garantías de rendimiento de peor caso.
Sí, dict debería ser suficiente. ¡Gracias! – Leonid
Creo que el tipo estándar de pitón dict() hará el truco en la mayoría de los casos. La diferencia con el std :: map de C++ es que el dict se impone como un mapa hash y el mapa de C++ se basa en un árbol.
Python dictionaries [5.5].
¿Has mirado en Python dictionaries?
Mire el módulo bintrees (biprees de instalación de pip). Este paquete proporciona Binary-RedBlack- y AVL-Trees escritos en Python y Cython/C.
Python SortedDict es similar al mapa C++ STL. Puede leer al respecto here o .
SortedDict es un contenedor de pares de valores clave en la que una orden se impuesta a las teclas de función de su relación ordenada entre sí. Al igual que con el tipo de datos dict incorporado en Python, SortedDict admite la inserción, el borrado y la búsqueda rápidos mediante .
- 1. Buena biblioteca similar a STL para C
- 2. C++ :: mapa STL borrar un inexistente clave
- 3. Estructura de datos similar a una matriz simétrica para C++
- 4. Usar el par como clave en un mapa (C++/STL)
- 5. ¿Hay una clase C++ STL que funcione como una tubería?
- 6. ¿Hay un C# equivalente al repetidor de salida STL?
- 7. Hash Table v/s Mapa de STL en C++
- 8. Cualquier biblioteca como STL (vector, mapa ...) en C?
- 9. ¿Un buen C equivalente al vector STL?
- 10. Alineación de estructura de datos C++ STL, vectorización de algoritmo
- 11. ¿hay alguna diferencia entre una estructura en C++ y una estructura en C#?
- 12. Cómo aplicar la transformación a un mapa STL en C++
- 13. ¿Cuál es el objeto similar a una estructura más rápido (de acceso) en Python?
- 14. ¿Hay una estructura HashTable en Wolfram Mathematica?
- 15. ¿Referencia al valor del elemento de mapa STL?
- 16. ¿La inserción al mapa STL invalida otro iterador existente?
- 17. ¿Mapa de STL sobre sí mismo?
- 18. vector STL frente a borrado de mapa
- 19. ¿Hay un equivalente al urllib de python en c/C++?
- 20. equivalente Python para C++ STL contenedores vector/Lista
- 21. mejor estructura de datos STL para encontrar elementos desordenados
- 22. ¿Hay una macro LARGEST_INTEGER o algo similar? (C)
- 23. ¿Por qué no hay una interfaz "Iterable" en el STL?
- 24. Mapa de STL - insertar o actualizar
- 25. ¿Hay algún método similar para dict en python?
- 26. C++ Pregunta STL: asignadores
- 27. ¿Puedo serializar el mapa de STL en MFC usando CArchive?
- 28. cuál es la diferencia entre mapa y hashmap en STL
- 29. C equivalente de C++ STL
- 30. ¿Hay una biblioteca similar a pyparsing en Java?
¿Has echado un vistazo a los diccionarios ordenados en Python 3.1? –
Echando un vistazo a ellos. Gracias, eso debería ser suficiente para mi propósito. La inserción/eliminación de hash es O (1), pero supongo que requeriría más memoria que tree con O (logN). – Leonid
Los árboles y las tablas hash requieren memoria O (n). –