This is an archived version of the course. Please find the latest version of the course on the main webpage.

Chapter 5: Application of dictionaries

Filtering the employees

face Josiah Wang

Now let us do something with the list of employees you have loaded from the previous task!

Again, this is a continuation from the previous task, so you can again work with the same source file as the load_employees() function earlier.

Now, write another function called filter_employees(). It should take two input arguments:

  1. a list of employees, where each element is a dict with the keys id, name, age and nationality (the same as the expected return value of load_employees())
  2. a tuple representing an (attribute, value) pair.

The function should return a list of employees (the same format as the first input argument), but with the elements filtered to only retain those that match the (attribute, value) pair given as the second input argument.

See the sample usage below for some examples.

Sample usage

>>> employees = [{"id": "111", "name": "Joe", "age": 24,
...               "nationality": "italy"},
...              {"id": "222", "name": "Luca", "age": 26, 
...               "nationality": "france"}, 
...              {"id": "333", "name": "Harry", "age": 24, 
...               "nationality": "thailand"}, 
...              {"id": "444", "name": "William", "age": 23, 
...               "nationality": "chile"}
...             ] 
...
>>> filtered_employees = filter_employees(employees, ("age", 24))
>>> print(filtered_employees)
[{'id': '111', 'name': 'Joe', 'age': 24, 'nationality': 'italy'}, 
 {'id': '333', 'name': 'Harry', 'age': 24, 'nationality': 'thailand'}]

>>> employees = load_employees("employees_detail.txt")
>>> criterion = ("nationality", "portugal")
>>> filtered_employees = filter_employees(employees, criterion)
>>> print(filtered_employees)
[{'id': '82660090', 'name': 'Meri Chaudhary', 'age': 40, 'nationality': 'portugal'}, 
 {'id': '54835190', 'name': 'Neelima Voll', 'age': 37, 'nationality': 'portugal'}]