I basically like Anders' approach as it is very general. Here's a version that puts the categorizer first (to match filter syntax) and uses a defaultdict (assumed imported).
def categorize(func, seq):"""Return mapping from categories to lists of categorized items.""" d = defaultdict(list) for item in seq: d[func(item)].append(item) return d