first_key = list(mydict.keys())[0]
Whereas obviously, a much better way (especially if it's a very large dictionary) is to do:
first_key = next(iter(mydict))
[Christopher Barker]
I'll leave it exercise for the reader to find that thead
For reference, the (very long) previous thread is here: https://mail.python.org/archives/list/python-ideas@python.org/thread/S7UMTWK65X6BJDYZ3SSU7I7HOIASDMMJ/.
[Inada Naoki]
I think we can add `itertools.first()` for this idiom, and
`itertools.last()` for `next(iter(reversed(x)))` idiom.
I like this idea, a lot. Another possibility I've been wondering about was whether several methods should be added to the dict interface:
- dict.first_key = lambda self: next(iter(self))
- dict.first_val = lambda self: next(iter(self.values()))
- dict.first_item = lambda self: next(iter(self.items()))
- dict.last_key = lambda self: next(reversed(self))
- dict.last_val = lambda self: next(reversed(self.values()))
- dict.last_item = lambda self: next(reversed(self.items()))
But I think I like a lot more the idea of adding general ways of doing these things to itertools.
Best,
Alex
On 5 Oct 2021, at 05:30, Christopher Barker <pythonchb@gmail.com> wrote:
Have folks thought about allowing indexing dictionary views as in the
following code, where d is a dict object?
d.keys()[0]
d.keys()[-1]
d.values()[0]
d.values()[-1]
d.items()[0]
d.items()[-1] # item that would be returned by d.popitem()
since dicts were made order-preserving, indexing the keys, items, etc does make some sense.
> I've also often wanted to get an arbitrary item/key from a dictionary, and
This is indeed one of the use cases identified.
--
Christopher Barker, PhD (Chris)
Python Language Consulting
- Teaching
- Scientific Software Development
- Desktop GUI and Web Development
- wxPython, numpy, scipy, Cython
_______________________________________________Python-ideas mailing list -- python-ideas@python.orgTo unsubscribe send an email to python-ideas-leave@python.orghttps://mail.python.org/mailman3/lists/python-ideas.python.org/Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/RAEDZPUTNABJLX3ESU32PZQBJ25DDOPK/Code of Conduct: http://python.org/psf/codeofconduct/