a dictionary from a list
Roy Smith
roy at panix.com
Sat Jun 25 09:10:33 EDT 2005
Terry Hancock <hancock at anansispaceworks.com> wrote:
> Before the dict constructor, you needed to do this:
>
> d={}
> for key in alist:
> d[key]=None
I just re-read the documentation on the dict() constructor. Why does it
support keyword arguments?
dict(foo="bar", baz="blah") ==> {"foo":"bar", "baz"="blah"}
This smacks of creeping featurism. Is this actually useful in real code?
It took me several readings of the doc to understand what this was doing.
Essentially, it's Perl's bareword syntax, and once I realized that, I
simultaneously understood what was happening and was revolted that Python
seems to have picked up one of Perl's most bizarre and confusing features.
I also think the published description is needlessly confusing. Why does
it use
{'one': 2, 'two': 3}
as the example mapping when
{'one': 1, 'two': 2}
would illustrate exactly the same point but be easier to comprehend. The
mapping given is the kind of thing I would expect to see in an obfuscated
programming contest.
Also, what's the point of the last example:
dict([(['one', 'two'][i-2], i) for i in (2, 3)])
It boils down to passing a list of tuples as an argument, which is already
illustrated by other examples. This is just a complicated and obtuse way
to construct the list of tuples. What does it add to the understanding of
how the dict() constructor works?
More information about the Python-list
mailing list