FWIW I'm +1 on `d.keys()[i]`,  `d.values()[i]`,  `d.items()[i]`. I don't
see any major issue with adding a __getitem__ to the view classes. I think
it's a great idea, and it would make my life easier and would replace the
primary use case where I currently use `ubelt.peek
<https://ubelt.readthedocs.io/en/latest/ubelt.html#ubelt.peek>`.

On Mon, Jun 29, 2020 at 2:57 PM Stestagg <stest...@gmail.com> wrote:

> 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
>
>
>
>
>
>
> On Mon, Jun 29, 2020 at 1:27 PM Hans Ginzel <h...@matfyz.cz> wrote:
>
>> Thank you.
>>
>> On Fri, Jun 26, 2020 at 02:50:22PM -0300, Joao S. O. Bueno wrote:
>> >On Fri, 26 Jun 2020 at 14:30, Hans Ginzel <h...@matfyz.cz> wrote:
>> >> 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.
>> >> …
>> >>
>> >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.
>>
>> That is fully corret to respect the _insertion_ order.
>>
>> >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 (an index for better than linear
>> search).
>> >
>> >I could create such a data structure if you want,
>>
>> Thank you, I will write it myself.
>> H.
>> _______________________________________________
>> 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/BWHRHYFTPJVHXKER5OUKARBS3N3OCSNK/
>> 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/32DNWTZBBD6XXMPIPRGCKBMA26M7VPFL/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
-Dr. Jon Crall (him)
_______________________________________________
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/T4LVK377JOXJETFJOOGYFRO7F5KXKNSP/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to