
On Fri, Jul 31, 2020 at 7:59 PM Steven D'Aprano <steve@pearwood.info> wrote:
On Fri, Jul 31, 2020 at 04:08:43PM -0700, Guido van Rossum wrote: [...]
I'm guessing that indexing by 0, if it were possible, would be a convenient idiom to implement the "first item" operation that has been requested numerous times (at least for dicts).
Indeed, that seems to be the only use-case which seems to be even remotely common. `dict.popitem` would do it, of course, but it also mutates the dict.
The other simple solution is `next(iter(mydict.items()))`.
That one always makes me uncomfortable, because the StopIteration it raises when the dict is empty might be misinterpreted. Basically I never want to call next() unless there's a try...except StopIteration: around it, and that makes this a lot less simple.
The bottom line here seems to me, as far as I can tell, is that being able to fetch a key and/or value by index is of only marginal use.
Agreed.
Slicing would be useful to get the first N items of a huge dict without materializing the full list of items as a list object, which brought Chris B to request this in the first place.
The first request in this thread was from Hans:
https://mail.python.org/archives/list/python-ideas@python.org/message/S7UMTW...
He is using a dict to hold an array of columns indexed by name `{column_name: column}` and wanted to re-order and insert columns at arbitrary positions.
A bare dict is just not the data structure for that problem. -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-c...>