Will OrderedDict become redundant in Python 3.7?
Asked Answered
S

1

133

From the Python 3.7 changelog:

the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec.

Would this mean that OrderedDict will become redundant? The only use I can think of it will be to maintain backwards compatibility with older versions of Python which don't preserve insertion-order for normal dictionaries.

Storm answered 15/6, 2018 at 9:16 Comment(1)
See also: #34305503Ushas
R
203

No it won't become redundant in Python 3.7 because OrderedDict is not just a dict that retains insertion order, it also offers an order dependent method, OrderedDict.move_to_end(), and supports reversed() iteration*.

Moreover, equality comparisons with OrderedDict are order sensitive and this is still not the case for dict in Python 3.7, for example:

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

Two relevant questions here and here.

* Support for reversed() iteration of regular Python dict is added for Python 3.8, see issue33462

Rushton answered 15/6, 2018 at 9:20 Comment(2)
The point about order sensitivity when comparing is very valid here.Trubow
@leggewie In Python 3.8 (and in 3.9), the point about equality comparisons is still different between OrderedDict and regular dict- I do not expect this to change anytime soonRushton

© 2022 - 2024 — McMap. All rights reserved.