def convert_to_set()

in evalbench/scorers/comparator.py [0:0]


def convert_to_set(results: list[dict]):
    """
    Converts a list of dictionaries to a set of tuples sorted according to their key
    Two dictionaries are considered the same if all their key-value pairs are the same.
    Dictionaries can contain lists as values.

    Args:
        1. results - The list of dictionaries.

    Returns:
        1. results_set - A set of sorted tuples
    """

    def make_hashable(item):
        """Recursively converts items to hashable types (tuples)."""
        if isinstance(item, list):
            return tuple(make_hashable(x) for x in item)
        elif isinstance(item, dict):
            return tuple(sorted((k, make_hashable(v)) for k, v in item.items()))
        else:
            return item

    results_set = {make_hashable(d) for d in results}
    return results_set