> Whether they are added to dict or itertools, there are still nine of 
> them

No, the suggestion was to add two functions to itertools (first() and last(), 
which would work with any iterable, not just dicts), rather than adding nine 
methods to the dict interface. This was precisely why I was saying that I liked 
the itertools solution more.

> On 6 Oct 2021, at 15:01, Steven D'Aprano <st...@pearwood.info> wrote:
> 
> On Wed, Oct 06, 2021 at 11:11:09AM +0100, Alex Waygood wrote:
>>> The temptation to insist "see, YAGNI!" at this point I shall resist.
>> 
>> *You* might not need it, but I've seen it come up a lot on Stack 
>> Overflow, and all too often people end up going for the much less 
>> efficient solution. I personally have also written code with practical 
>> applications using `next(iter(mydict))`.
> 
> Under what circumstances do you care what the first key in a dict is, 
> without going on to care about the second, third, fourth etc?
> 
> They are surely extremely niche, or artificial, or both, e.g. the 
> Stackoverflow problem you link to: "find the first non-repeating 
> character in a string -- using only one loop". Why the *first* rather 
> than any, or all?
> 
> In any case, the presence of one or two uses for a piece of 
> functionality doesn't mandate that we make this a builtin. Your solution 
> with next() is perfectly adequate.
> 
> The other suggested methods are even more obscure. Why have a method 
> for returning the first value, without knowing the key?
> 
> "I don't know what the first key is, and I don't care, but I know that 
> whatever it is, it maps to the value 17."
> 
> Now what are you going to do with that knowledge? This seems like a 
> method in desperate need of a use-case.
> 
> 
> [...]
>> I agree that it's a lot of methods to add. That's precisely why I 
>> prefer Inada Naoki's suggestion of additions to itertools
> 
> Whether they are added to dict or itertools, there are still nine of 
> them, and they are pretty much near clones of each other:
> 
>    # first_ and last_ whatsits 
>    next([iter|reversed](obj.[keys|values|items]()))
> 
> if you will excuse the misuse of hybrid Python/BNF syntax :-)
> 
> 
> 
> -- 
> Steve
> _______________________________________________
> 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/T3TOFAFBPGY44LOVKSMVZJGBNQ7MUNEL/
> 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/OCVRRJPZQCQ6UKVKR4GQRJFWAUJNDFK6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to