> On Oct 6, 2021, at 10:53 AM, Finn Mason <finnjavie...@gmail.com> wrote:
> 
> 
> I'm not a huge fan. Sure, dicts are ordered now, but I doubt that many people 
> use that feature. I honestly still think of them as unordered ;)
> 
There’s tons of code that relies on dicts being ordered. Some just don’t know 
it. For example, dataclasses relies on ordered dicts. 

I think we can rely on dicts being ordered as a language guarantee for the rest 
of time. 

Eric

>  Let's talk code clarity. After all, to quote GvR, "Code is more often read 
> than written." (I may have gotten the wording wrong, I just wrote it off the 
> top of my head.) To me, the presence of a dict suggests that order doesn't 
> matter. If you want order, communicate that by using 
> `collections.OrderedDict`, a fully-featured dict subclass where the point is 
> the order! You can get the first or last key/item pairs with `.popitem()`. It 
> works!
> 
> OrderedDict documentation: 
> https://docs.python.org/3.10/library/collections.html#collections.OrderedDict
> 
> We could add indexing to OrderedDict, which would return key/value pairs. 
> (While we're talking about collections, why don't we return a namedtuple ;) ) 
> As for adding functions to `itertools`, sure, I'm for it. We don't need 
> people writing `next(iter(iterable))` just to get the first item.
> 
> 
> --
> Finn
> 
>> On Wed, Oct 6, 2021, 8:02 AM 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/3RKWSNOO4J7WJWBYFXMA7HKPBVZVIF3S/
> 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/MNVUANOCFRG5JYRXKB546HVCCA2GRNNF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to