from collections import defaultdict def per_manager(timesheets): per_manager = defaultdict(list) # filter timesheets per manager for timesheet in [t for t in timesheets if not t.is_done()]: manager_id = timesheet.approver per_manager[manager_id].append(timesheet) return per_manager def employees(timesheets): return dict([(t.employee.id, t.employee) for t in timesheets])