On Fri, 26 Jun 2020 at 14:30, Hans Ginzel <h...@matfyz.cz> wrote:

> Date: Fri, 26 Jun 2020 18:47:44 +0200
> From: Hans Ginzel <h...@matfyz.cz>
> To: Hans Ginzel <h...@artax.karlin.mff.cuni.cz>
> Subject: Access (ordered) dict by index; insert slice
>
> Hello,
>
> thank you for making dict ordered.
> Is it planned to access key,value pair(s) by index? See
> https://stackoverflow.com/a/44687752/2556118 for example. Both for
> reading and (re)writing?
> Is it planned to insert pair(s) on exact index? Or generally to slice? See
> splice() in Perl, https://perldoc.perl.org/functions/splice.html.
>
> Use case: Represent database table metadata (columns). It is useful as to
> access columns both by name and by index as to insert column on specific
> position, https://dev.mysql.com/doc/refman/8.0/en/alter-table.html,
> “ALTER TABLE ADD COLUMN [FIRST |AFTER col]” (consider default order or
> table storage size optimisation by aligning).
>
>
These are odd requirements.

No - Python dictionaries are ordered, by order of insertion only, but one
can't generally do any manipulation by the numeric index of
a dictionary entry - and it will stay that way.

If you need such an hybrid data structure, you could just have
a list of tuples as data structure, and use collections.abc.MutableMapping
to provide
a dict-like interface to it (and even a parallel dictionary to be used as
an index
for better than linear search).

I could create such a data structure if you want, but I don't see that as
useful enough
to be part of the language. The part allowing slice-assignment seems,
actually,
quite confusion prone - since in dictionaries the order is order of
insertion, not
alphabetical order or any other.


> Thank you in advance,
> Hans
> PS1: Named tuples cannot be used, are immutable.
> PS2: See
> https://metacpan.org/pod/perlref#Pseudo-hashes:-Using-an-array-as-a-hash
> _______________________________________________
> 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/S7UMTWK65X6BJDYZ3SSU7I7HOIASDMMJ/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/JKFZB2AGNPKD55CU75IMZQOCVGCPHMND/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to