Esiste una struttura in Python
che supporta operazioni simili a C++ STL map
e la complessità delle operazioni corrisponde a C++ STL map
?Esiste una struttura in Python simile alla mappa STL di C++?
risposta
dict
di solito è abbastanza vicino - cosa vuoi che non faccia?
Se la risposta è "fornire ordine", cosa c'è di sbagliato in for k in sorted(d.keys())
? Usa troppa memoria, forse? Se stai facendo molti traversamenti ordinati intervallati da inserti, allora OK, punto preso, vuoi davvero un albero.
dict
è in realtà una tabella hash anziché un b-tree. Ma allora map
non è definito come b-tree, quindi non ti permette di fare cose come staccare i sottoalberi come un nuovo map
, ha solo le stesse complessità di prestazioni. Tutto ciò che è veramente di cui preoccuparsi è che cosa succede a dict
quando ci sono un gran numero di collisioni hash, ma deve essere piuttosto raro usare Python in situazioni in cui si richiedono garanzie di prestazioni nel peggiore dei casi.
Sì, dovrebbe essere sufficiente. Grazie! – Leonid
Credo che il tipo standard python dict() farà il trucco nella maggior parte dei casi. La differenza dalla std :: map di C++ è che dict è impementato come una mappa hash e la mappa di C++ è ad albero.
Python dictionaries [5.5].
Hai esaminato Python dictionaries?
Controllare il modulo bintrees (pip install bintrees). Questo pacchetto fornisce Binary- RedBlack- e AVL-Trees scritti in Python e Cython/C.
Python SortedDict è simile alla mappa STL di C++. Si può leggere su di esso here o .
SortedDict è un contenitore di coppie di valori-chiave in cui un ordine è imposto sui tasti secondo la loro relazione ordinata tra loro. Come con il tipo di dati dict incorporato in Python, SortedDict supporta l'inserimento rapido, l'eliminazione e la ricerca per chiave.
- 1. Esiste una funzione Javascript simile alla funzione Contatore Python?
- 2. Utilizzo della coppia come chiave in una mappa (C++/STL)
- 3. Come applicare una trasformazione a una mappa STL in C++
- 4. Serializzazione di una mappa STL di strutture
- 5. Esiste una funzione simile alla coalesce in Excel?
- 6. Tipo di oggetto simile alla mappa in PL/SQL?
- 7. mappa dei vettori in STL?
- 8. stl performance della mappa?
- 9. Esiste una scorciatoia in elisir simile all'enumerazione di Python?
- 10. Esiste una classe STL C++ che funziona come una pipe?
- 11. C equivalente di C++ STL
- 12. C++ mappa STL :: cancellare un inesistente chiave
- 13. STL mappa su se stesso?
- 14. Esiste un equivalente in Scala alla funzione di mappa più generale di Python?
- 15. Ripetizione di una stringa in Java - simile alla semplicità di una riga di Python
- 16. Esiste un algoritmo Objective-C come `transform` di C++ STL?
- 17. Esiste una macro LARGEST_INTEGER o qualcosa di simile? (C)
- 18. Esiste un "sé" per riferirsi alla propria struttura in MATLAB?
- 19. Esiste una funzione mappa?
- 20. Esiste una console interattiva simile a Python per Java?
- 21. Mappa STL - inserire o aggiornare
- 22. Esiste una semplice mappa parallela basata sui processi per python?
- 23. Mappa STL C++: è il tempo di accesso O (1)?
- 24. Filtro una mappa con struttura annidata complessa
- 25. Rimuovere una chiave da una mappa C++
- 26. Chiamare un metodo puntatore su una struttura in una mappa
- 27. Mappa thread-safe C++
- 28. Come posso ordinare una mappa STL in base al valore?
- 29. Simile a passare in Python per C#
- 30. Estrarre i campi di una struttura C
Hai controllato i dizionari ordinati in Python 3.1? –
Guardandoli. Grazie, dovrebbe essere sufficiente per il mio scopo. L'inserimento/eliminazione dell'hash è O (1), ma suppongo che ciò richiederebbe più memoria dell'albero con O (logN). – Leonid
Alberi e tabelle hash richiedono entrambi memoria O (n). –