web-dev-qa-db-fra.com

OrderedDict deviendra-t-il redondant dans Python 3.7?

Depuis le changelog Python 3.7 :

la nature de préservation d'ordre d'ordre d'insertion de dict objets a été déclarée d'être une partie officielle de la Python spec de langue.

Cela signifierait-il que OrderedDict deviendra redondant? Le seul usage auquel je peux penser est de maintenir la compatibilité avec les versions antérieures de Python) qui ne conservent pas l'ordre d'insertion pour les dictionnaires normaux.

46
James Hiew

Non, il ne deviendra pas redondant dans Python 3.7 car OrderedDict n’est pas simplement un dict qui conserve l’ordre d’insertion, il propose également une méthode dépendant de l’ordre, - OrderedDict.move_to_end() , et prend en charge reversed() itération *.

De plus, les comparaisons d'égalité avec OrderedDict sont sensibles à l'ordre et ce n'est toujours pas le cas pour 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 ici et ici .

* Prise en charge de reversed() itération de Python dict normal] est ajouté pour Python 3.8, voir issue33462

70
Chris_Rands