runtime
160 / 500
question 160 Collections & Itertools · hard

How many people work under each manager?

An org chart is stored as a flat list: each person names their manager (None for someone at the top). For a headcount report, write team_sizes(employees): return a plain dictionary giving, for every person, how many people work under them directly or indirectly. The list is in no particular order: a person can appear before their manager.

Functionteam_sizes(employees)
employeesa list of dictionaries with name and manager (a name, or None)
Returnsa plain dict of name → number of people below them; 0 for someone with no reports
ExampleAda manages Ben and Cy, Ben manages Dee, Dee manages Eve → Ada 4, Ben 2, Cy 0, Dee 1, Eve 0
Examples
callteam_sizes([{'name': 'Ada', 'manager': None}, {'name': 'Ben', 'manager': 'Ada'}, {'name': 'Cy', 'manager': 'Ada'}, {'name': 'Dee', 'manager': 'Ben'}, {'name': 'Eve', 'manager': 'Dee'}])returns{'Ada': 4, 'Ben': 2, 'Cy': 0, 'Dee': 1, 'Eve': 0}
callteam_sizes([{'name': 'Kai', 'manager': None}, {'name': 'Lu', 'manager': 'Kai'}])returns{'Kai': 1, 'Lu': 0}
callteam_sizes([])returns{}

Loading your progress…

How many people work under each manager? — Python practice · Runtime