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/S7UMTWK65X6BJDYZ3SSU7I7HOIASDMMJ/
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.