May-28-2019, 12:01 PM
Pure-Python approach (taking advantage of else clause in for-loop):
results = [ (28000.00, 2010, 272), (308000.00, 2011, 272), (582000.00, 2012, 272), (387000.00, 2013, 272), (367000.0000, 2010, 281), (3037000.00, 2011, 281), (4822000.00, 2012, 281), (2936000.00, 2013, 281), (637000.00, 2010, 282), (3440000.00, 2011, 282), (478000.00, 2010, 296), (1209000.00, 2012, 296) ] calendar_year = list(set(sorted([row[-2] for row in results]))) employees = list(set(sorted([row[-1] for row in results]))) sales_amount = list() for employee in employees: sales_amount.append([]) for year in calendar_year: for row in results: if employee == row[-1] and year == row[-2]: sales_amount[-1].append(row[0]) break else: # no-break sales_amount[-1].append(0)
Output:[2010, 2011, 2012, 2013]
[272, 281, 282, 296]
[[28000.0, 308000.0, 582000.0, 387000.0], [367000.0, 3037000.0, 4822000.0, 2936000.0], [637000.0, 3440000.0, 0, 0], [478000.0, 0, 1209000.0, 0]]
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy
Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.