OrderedDict deviendra-t-il redondant dans Python 3.7?


90

Depuis le journal des modifications de Python 3.7 :

la nature de préservation de l'ordre d'insertion des objets dict a été déclarée comme faisant partie officielle de la spécification du langage Python.

Cela signifierait-il que OrderedDictcela deviendrait superflu? La seule utilité à laquelle je pense sera de maintenir la compatibilité ascendante avec les anciennes versions de Python qui ne préservent pas l'ordre d'insertion pour les dictionnaires normaux.


Réponses:


132

Non, il ne deviendra pas redondant dans Python 3.7 car ce OrderedDictn'est pas seulement un dictqui conserve l'ordre d'insertion, il offre également une méthode dépendante de l'ordre OrderedDict.move_to_end()et prend en charge l' reversed()itération *.

De plus, les comparaisons d'égalité avec OrderedDictsont sensibles à l'ordre et ce n'est toujours pas le cas dicten Python 3.7, par exemple:

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

Deux questions pertinentes ici et ici .

* La prise en charge de l' reversed()itération de Python standard dictest ajoutée pour Python 3.8, voir issue33462


Le point sur la sensibilité de l'ordre lors de la comparaison est très valable ici.
Tim Skov Jacobsen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.