<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def split_by_criteria(dictionary, keys=None, prefix=None):
 # type: (dict, set or list or tuple) -> SplitResultSpec """Split a dictionary in two by the provided keys. Args: dictionary (dict[str, object]):
 A Python dictionary keys (sequence [str]):
 A sequence of keys which will be added the split criteria prefix (str):
 A prefix which will be added the split criteria Returns: `SplitResultSpec` : A collections.namedtuple with the following attributes: * Args: included (dict[str, object]: A dictionary with the keys included in the criteria. excluded (dict[str, object]: A dictionary with the keys not included in the criteria. """

    keys = keys or []
    keys = set(keys)

    included_items = {k: dictionary[k] for k in dictionary.keys() if k in keys or (prefix and k.startswith(prefix))}
    excluded_items = {k: dictionary[k] for k in dictionary.keys() if k not in included_items}

    return SplitResultSpec(included=included_items, excluded=excluded_items)