from typing import Callable


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

    >>> filter_keys({'Lisa': 8, 'Marge': 36}, lambda x: len(x) > 4)
    {'Marge': 36}
    """
    return {k: v for k, v in d.items() if predicate(k)}