from typing import Callable


def filter_values(d: dict, predicate: Callable) -> dict:
    """
    Returns new subset dict of d where values pass predicate fn

    >>> d = {'Homer': 39, 'Marge': 36, 'Bart': 10}
    >>> filter_values(d, lambda x: x < 20)
    {'Bart': 10}
    """
    return {k: v for k, v in d.items() if predicate(v)}