[Python-Dev] [issue34221] Any plans to combine collections.OrderedDict with dict (original) (raw)
Terry Reedy tjreedy at udel.edu
Thu Jul 26 13:23:06 EDT 2018
- Previous message (by thread): [Python-Dev] [issue34221] Any plans to combine collections.OrderedDict with dict
- Next message (by thread): [Python-Dev] [issue34221] Any plans to combine collections.OrderedDict with dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 7/26/2018 2:15 AM, Raymond Hettinger wrote:
On Jul 25, 2018, at 8:23 PM, INADA Naoki <songofacandy at gmail.com> wrote:
On Thu, Jul 26, 2018 at 12:04 PM Zhao Lee <redstone-cold at 163.com> wrote:
Since Python 3.7,dicts remember the order that items were inserted, so any plans to combine collections.OrderedDict with dict? https://docs.python.org/3/library/collections.html?#collections.OrderedDict https://docs.python.org/3/library/stdtypes.html#dict
No. There are some major difference. * d1 == d2 ignores order / od1 == od2 compares order * OrderedDict has movetoend() method. * OrderedDict.pop() takes
last=True
keyword.
In addition to the API differences noted by Naoki, there are also implementation differences. The regular dict implements a low-cost solution for common cases. The OrderedDict has a more complex scheme that can handle frequent rearrangements (movetoend operations) without touching, resizing, or reordering the underlying dictionary. Roughly speaking, regular dicts emphasize fast, space-efficient core dictionary operations over ordering requirements while OrderedDicts prioritize ordering operations over other considerations.
That said, now that regular dicts are ordered by default, the need for collections.OrderedDict() should diminish quite a bit. Mostly, I think people will ignore OrderedDict unless their application heavily exercises move to end operations.
On python-idea, Miro Hrončok asked today whether we can change the OrderedDict repr from, for instance,
OrderedDict([('a', '1'), ('b', '2')]) # to OrderedDict({'a': '1', 'b': '2'})
I am not sure what our repr change policy is, as there is a back-compatibility issue but I remember there being changes.
-- Terry Jan Reedy
- Previous message (by thread): [Python-Dev] [issue34221] Any plans to combine collections.OrderedDict with dict
- Next message (by thread): [Python-Dev] [issue34221] Any plans to combine collections.OrderedDict with dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]