OrderedDict diventerà ridondante in Python 3.7?


92

Dal changelog di Python 3.7 :

la natura di conservazione dell'ordine di inserzione degli oggetti dict è stata dichiarata parte ufficiale delle specifiche del linguaggio Python.

Ciò significherebbe che OrderedDictdiventerà ridondante? L'unico utilizzo che mi viene in mente sarà quello di mantenere la retrocompatibilità con le versioni precedenti di Python che non conservano l'ordine di inserimento per i normali dizionari.


Risposte:


137

No, non diventerà ridondante in Python 3.7 perché OrderedDictnon è solo un programma dictche mantiene l'ordine di inserimento, ma offre anche un metodo dipendente dall'ordine OrderedDict.move_to_end()e supporta l' reversed()iterazione *.

Inoltre, i confronti di uguaglianza con OrderedDictsono sensibili all'ordine e questo non è ancora il caso dictin Python 3.7, ad esempio:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

Due domande rilevanti qui e qui .

* Il supporto per l' reversed()iterazione del normale Python dictè stato aggiunto per Python 3.8, vedere il problema33462


1
Il punto sulla sensibilità all'ordine durante il confronto è molto valido qui.
Tim Skov Jacobsen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.