On Sat, Apr 14, 2012 at 7:26 AM, Tim Chase <python.l...@tim.thechases.com> wrote: > > On 04/13/12 22:54, Chris Angelico wrote: >> >> Yes, that would be the right method to use. I'd not bother with the >> function and map() though, and simply iterate: >> >> d = {} >> for val in l: >> d.setdefault(f(val), []).append(val) > > > Or make d a defaultdict: > > from collections import defaultdict > d = defaultdict(list) > for val in l: > d[f(val)].append(val)
For those insisting on getting something functional-ish: d = {k: list(v) for k, v in itertools.groupby(sorted(l, key=f), f)} (and one of these days I will send to the list instead of directly replying, the first time...) -- ~Zahlman {:> -- http://mail.python.org/mailman/listinfo/python-list