No changelog do Python 3.7 :
a natureza de preservação da ordem de inserção de objetos dict foi declarada como uma parte oficial das especificações da linguagem Python.
Isso significa que OrderedDict
se tornará redundante? O único uso que posso pensar é manter a compatibilidade com versões anteriores do Python, que não preservam a ordem de inserção para dicionários normais.
python
python-3.x
dictionary
python-3.7
ordereddict
James Hiew
fonte
fonte
Respostas:
Não, ele não se tornará redundante no Python 3.7 porque
OrderedDict
não é apenas umdict
que retém a ordem de inserção, mas também oferece um método dependente do pedidoOrderedDict.move_to_end()
, e oferece suporte àreversed()
iteração *.Além disso, as comparações de igualdade com
OrderedDict
são sensíveis à ordem e esse ainda não é o casodict
no Python 3.7, por exemplo:>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) False >>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) True
Duas questões relevantes aqui e aqui .
* Suporte para
reversed()
iteração de Python regulardict
foi adicionado para Python 3.8, consulte o problema 33462fonte