Su questo page, vedo qualcosa di interessante:È sempre più veloce usare la stringa come chiave in un dict?
Si noti che non v'è un fast-percorso per dicts che (in pratica) trattare solo con le chiavi str; questo non influenza la complessità algoritmica, ma può influenzare in modo significativo i fattori costanti: quanto velocemente un programma tipico finisce.
Quindi cosa significa esattamente?
Significa utilizzare la stringa poiché la chiave è sempre più veloce?
Se sì, perché?
Aggiornamento:
Grazie per i suggerimenti circa l'ottimizzazione! Ma in realtà sono più interessato alla pura verità, che se o quando dovremmo fare l'ottimizzazione.
Aggiornamento 2:
Grazie per le grandi risposte, io cito il contenuto dal link fornita da @DaveWebb qui:
" ...
ma_lookup è inizialmente impostato sulla funzione lookdict_string (rinominata lookdict_unicode in 3.0), che come Suppone che sia le chiavi nel dizionario sia la chiave ricercata siano standard di PyStringObject. È quindi in grado di effettuare un paio di ottimizzazioni, come ad esempio l'attenuazione di vari controlli degli errori, poiché il confronto tra stringhe e stringhe non genera mai eccezioni. Inoltre, non è necessario effettuare confronti tra oggetti ricchi, il che significa evitare di chiamare PyObject_RichCompareBool e utilizzare sempre _PyString_Eq direttamente.
... "
Inoltre, per i numeri esperimento, penso che la dimensione della differenza sarà ancora più grande se non c'è int-to-stringa di conversione
Immagino che tutto ciò dipenda da quanto velocemente sia il metodo '__hash__' di un oggetto chiave. Immagino che sia abbastanza semplice eseguire l'hash di una stringa, ma sarei molto interessato a quale proporzione di una ricerca di dizionari viene spenta. – Wilduck
L'aggiornamento non cambia nulla. No, nella maggior parte dei casi non sarà più veloce a meno che le tue chiavi non siano delle stringhe in primo luogo. –
@Lattyware la pagina collegata sembra implicare un aumento della velocità * per ogni ricerca * non solo per la costruzione. – Wilduck