[Python-Dev] Re: "groupby" iterator

Guido van Rossum guido at python.org
Wed Dec 3 10:31:33 EST 2003

> I'm am still curious to hear your thoughts on the either sublime or
> crazy idea for a generalized extractor object:
> list.sorted(students, key=extract.score)
> list.sorted(animal_weights, key=extract[1])
> groupby(students, key=extract.homeroom)
> groupby(recordtuples, key=extract[0])

This is the same as the "Voodoo" idea; my comments on that are
repeated here:

    It is also somewhat weak in that it only addresses lambdas with one
    argument, and only allows a single reference to that argument in the
    resulting expression, and can't really be made to handle method calls
    without more gross notational hacks -- even though it *can* be made to
    handle arbitrary binary and unary operators.

    Yet, it captures 90% of the use cases quite well.  I also wonder if
    the simple trick of requiring to call a "constructor" on each use
    might not make it more palatable.  I.e., instead of writing

      map(Voodoo.address[0], database)

    you'd write

      map(Voodoo().address[0], database)

    where you can replace Voodoo with a name of your choice, perhaps
    operator.extract -- although I think this is too different to belong
    in the operator module.  Nick Goghlan showed that a pretty readable
    brief explanation *can* be written.

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-Dev mailing list