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.
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