[Python-Dev] dict comps (original) (raw)

Tim Peters tim.one@home.com
Fri, 26 Oct 2001 01:34:16 -0400


[Jeremy Hylton]

We agreed yesterday that the dictionary() constructor would accept a a list of two-tuples (strictly speaking an iterable object of iterable objects of length 2).

FYI, this is checked in now.

That plus list comprehensions pretty much covers the territory of dict comprehensions:

>>> print dictionary([(i, chr(65 + i)) for i in range(4)]) {0: 'A', 1: 'B', 2: 'C', 3: 'D'}

Wow -- that's exactly what it prints. You got your own time machine now?

While it covers the semantics, the pragmatics may be off, since listcomps produce genuine lists, and so e.g.

dictionary([(key, f(key)) for key in file('huge')])

may require constructing an unboundedly large list of twoples before dictionary() sees the first pair. dictionary() per se doesn't require materializing a giant list in one gulp.