:param suspect:
    :return new dict with capitalized keys:

def capitalize_keys(suspect):
    """
    :param suspect:
    :return new dict with capitalized keys:
    """
    if not isinstance(suspect, dict):
        raise TypeError('you must pass a dict.')

    converted = {}

    for key in list(suspect):
        if not isinstance(key, six.string_types):
            continue

        if key[0].isupper():
            continue

        if '_' in key:
            new_key = ''.join([chunk.capitalize() for index, chunk in enumerate(key.split('_'))])
        else:
            new_key = key.capitalize()

        value = suspect.get(key)
        if type(value) is dict:
            converted[new_key] = capitalize_keys(value)
        elif type(value) is list:
            converted[new_key] = [capitalize_keys(x) if isinstance(x, dict) else x for x in value]
        else:
            converted[new_key] = value

    return converted