¿OrderedDict se volverá redundante en Python 3.7?

90

Desde el registro de cambios de Python 3.7 :

la naturaleza de conservación del orden de inserción de los objetos dict ha sido declarada como parte oficial de la especificación del lenguaje Python.

¿Significaría esto que OrderedDictse volverá redundante? El único uso que se me ocurre será mantener la compatibilidad con versiones anteriores de Python que no conservan el orden de inserción de los diccionarios normales.

James Hiew
fuente

Respuestas:

132

No, no se volverá redundante en Python 3.7 porque OrderedDictno solo dictretiene el orden de inserción, sino que también ofrece un método dependiente del orden OrderedDict.move_to_end(), y admite reversed()iteración *.

Además, las comparaciones de igualdad con OrderedDictson sensibles al orden y este todavía no es el caso dicten Python 3.7, por ejemplo:

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

Dos preguntas relevantes aquí y aquí .

* Se agregó soporte para la reversed()iteración de Python regular dictpara Python 3.8, consulte el número 33462

Chris_Rands
fuente
El punto sobre la sensibilidad del orden al comparar es muy válido aquí.
Tim Skov Jacobsen