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/