] # Employee Dictionary employees = {} # Load Sample Data into Classes and store in our "employees" Dictionary for p in data: # Pick which class we're using if p['type'] == 'M': e = Manager() else: e = Employee() # Basic Data e.id = p['id'] e.givenname = p['gn'] e.surname = p['sn'] e.title = p['t'] # If the person has a manager, record it if 'm' in p: e.manager = employees[p['m']] employees[p['m']].reports.append(e) # Add to Employee Directory employees[e.id] = e # Recursive Function to Print the Org Chart (tree) # person - Starting Person, required # limit - How many levels deep to display, default is unlimited