[Python-ideas] Possible method of distinguishing between set-literals, dict-literals, and odict-literals
MRAB
python at mrabarnett.plus.com
Wed Jun 17 02:13:27 CEST 2009
Steven D'Aprano wrote:
> On Wed, 17 Jun 2009 04:28:29 am Terry Reedy wrote:
>>>> When you read OrderedDict([('a', '1'),('b', '2'), ('c', '3')]),
>> OrderedDict({'a':1', 'b':'2', 'c':'3'}]
>
> Creating an ordered dict from arbitrarily ordered input data surely
> ranks up there with one of the most pointless operations ever!
>
> You know, this is such a simple, yet silly, mistake to make, I'd be
> almost tempted to disallow constructing an OrderedDict from regular
> dicts. If you want non-arbitrary ordering, you can't use a dict as
> input, and if you don't want arbitrary ordering, there's no point in
> using an ordered dict!
>
> As far as I can see, there is no use-case for OrderedDict(dict) other
> than to generate confused newbies.
>
>
>
>>> How about ['a':'1', 'b':'2', 'c':'3']?
>> Nice Idea!
>
> I hope you're being sarcastic.
>
If hard-coded ordered dicts are common enough then having syntactic
sugar for them would be a good idea: ['a':'1', 'b':'2', 'c':'3'] is
both shorter and clearer than OrderedDict([('a', '1'),('b', '2'), ('c',
'3')]). I doesn't feel that unPythonic to me.
But ordered dicts tend to be built one item at a time while iterating
through some data whose values aren't known until runtime, so I doubt
that ordered dict literals would be common enough anyway to warrant
addition.
More information about the Python-ideas
mailing list