On Thu, Jul 30, 2020 at 09:35:31PM +0200, Marco Sulla wrote: > On Thu, 30 Jul 2020 at 19:24, Steven D'Aprano <st...@pearwood.info> wrote: > > > You can't insert a key in a specific position. If I have this dict: > > > > mydict = {'a': 1, 'c': 3, 'd': 4, 'e': 5} > > > > I can't insert 'b':2 between keys 'a' and 'c', except by creating a new > > dict. > > > > Not sure about this. In C code, dicts are a hashtable and an array of > items. In theory, nothing prevents you from inserting a new key in a > specific position of the key array instead of at the end.
Of course anything is possible in theory, but I think that would require shifting the existing keys and values in the array, and updating the entries in the hash table to point to their key in the new position, and probably other complications I haven't thought of. Of course it is possible to have a data structure with O(1) insertions and updates by key, and O(1) insertions and updates by index, and fully reorderable keys. But it probably won't be small and lean and fast. Just because something takes constant time doesn't mean it will be a *fast* constant time. In any case, if people want to propose turning dicts into fully-fledged reorderable, slicable sequences as well as mappings, they will probably need a PEP :-) -- Steven _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/NLT46M65Y5326AETV6NFEXJONCQZCC65/ Code of Conduct: http://python.org/psf/codeofconduct/