133 votes

OrderedDict deviendra-t-il redondant dans Python 3.7 ?

Desde el Journal des modifications de Python 3.7 :

la nature de la préservation de l'ordre d'insertion de dict objets a été déclaré pour être une partie officielle de la spécification du langage Python.

Est-ce que cela signifie que OrderedDict deviendront superflus ? La seule utilité à laquelle je peux penser sera de maintenir une compatibilité descendante avec les anciennes versions de Python qui ne préservent pas l'ordre d'insertion pour les dictionnaires normaux.

0 votes

203voto

Chris_Rands Points 15161

Non, elle ne deviendra pas superflue dans Python 3.7 car OrderedDict n'est pas seulement un dict qui conserve l'ordre d'insertion, il propose également une méthode dépendant de l'ordre, OrderedDict.move_to_end() et soutient reversed() itération*.

En outre, les comparaisons d'égalité avec OrderedDict sont sensibles à l'ordre et ce n'est toujours pas le cas pour les dict dans 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 aquí y aquí .

* Soutien aux reversed() itération de Python régulier dict est ajouté pour Python 3.8, voir numéro 33462

12 votes

Le point concernant la sensibilité de l'ordre lors de la comparaison est très valable ici.

0 votes

Merci beaucoup pour l'explication. Je crois qu'avec la 3.8, il n'y a plus cette différence.

6 votes

@leggewie Dans Python 3.8 (et dans 3.9), le point concernant les comparaisons d'égalité est encore différent entre OrderedDict et régulier dict - Je ne pense pas que cela va changer de sitôt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X