[Python-ideas] Let's be more orderly!
Don Spaulding
donspauldingii at gmail.com
Wed May 15 18:04:47 CEST 2013
On Wed, May 15, 2013 at 10:20 AM, <random832 at fastmail.us> wrote:
> On Tue, May 14, 2013, at 21:57, Don Spaulding wrote:
> > I don't understand the dismissal of OrderedDict.__init__ as an invalid
> > use
> > case. It would be a substantial usability improvement to special-case
> > OrderedDict at compile-time purely to get the ability to instantiate
> > odict
> > literals (not that I'm suggesting that).
>
> Maybe we should be talking about literals. OrderedDict(a=3, b=3, c=7) is
> not and never will be a literal.
>
Forgive my misuse of the term 'literal' here. I meant only to say that
anywhere you currently use a plain-old-dictionary literal, there's no way
to easily switch it to a value which preserves its order. For example:
foo = {
'b': 1,
'a': 2
}
Has to turn into something far less appealing:
foo = OrderedDict()
foo['b'] = 1
foo['a'] = 2
# or...
foo = OrderedDict([
('b', 1),
('a', 2)
])
Even if the only ordering change that was made was to magically give
OrderedDict.__init__ its **kwargs in order, it would clean up these
instances, which I initially referred to as literals.
foo = OrderedDict(
b=1,
a=2
)
I was explicitly not advocating that change, just noting that the
OrderedDict.__init__ use case is a perfect example of how this would be
used to enable something that currently isn't possible without, IMO, extra
noise in the definition of dicts of this nature.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130515/2518c902/attachment.html>
More information about the Python-ideas
mailing list