I'm quite supportive (+1) of the proposal to add numeric indexing to the 'dict_*' views.
Given that dictionaries are now ordered, it seems reasonable to look-up, for example, keys by index,
One simple example of where this is surprising is in the following:
>>> random.choice({'a': 1,}.keys())
TypeError: 'dict_keys' object is not subscriptable
This could be 'fixed' with a simple hack in the `random.choice` code, bit equally, implementing __getitem__ on `dict_*` types would enrich the interface.
Several times now, I've had the need to 'just get any key/value' from a large dictionary. I usually try first to run `var.keys()[0]` only to be told that I'm not allowed to do this, and instead have to ask python to make a copy of this datastructure with a different type, just so I can perform the index operation. This is possible, but seems redundant, and reinforces bad practices around creating copies of potentially large structures.
Another use-cases is doing variations of reduce() over dictionaries, where getting an initial value from the dict, and then performing operations over the remaining items is much simpler to do with indexing on the views.
Steve