Here are some examples of putting it all together:

>>> from predicate import where

>>> people = [
...     { 
...         'name': {
...             'first': 'John', 
...             'last': 'Smith',
...         }, 
...         'age': 32, 
...         'employment': [
...             {'name': 'McDonalds', 'position': 'Manager'},
...             {'name': 'CSV', 'position': 'Cashier'}
...         ]
...     },
...     { 
...         'name': {
...             'first': 'Jane', 
...             'last': 'Smith', 
...         },
...         'age': 30, 
...         'employment': [
...             {'name': 'BurgerKing', 'position': 'Manager'}
...         ]
...     },
...     {
...         'name': {
...             'first': 'Billy', 
...             'last': 'Bob',
...         }, 
...         'age': 55, 
...         'employment': [
...             {'name': 'Microsoft', 'position': 'Programmer'}
...         ]
...     },
...     {
...         'name': {
...             'first': 'Jill', 
...             'last': 'Jones', 
...         },
...         'age': 21, 
...         'employment': []
...     },
... ]

>>> smiths = list(filter(where(name__last__iexact='smith'), people))

>>> smiths
[{'name': {'first': 'John', 'last': 'Smith'}, 'age': 32, 'employment': [{'name': 'McDonalds', 'position': 'Manager'}, {'name': 'CSV', 'position': 'Cashier'}]}, {'name': {'first': 'Jane', 'last': 'Smith'}, 'age': 30, 'employment': [{'name': 'BurgerKing', 'position': 'Manager'}]}]