Skip to content
Aabha AI Academy

All courses · Course overview · Lesson sequence

Skip to lesson text

solutions/01_lab.py

"""Reference solution; compare only after attempting the learner starter."""


def new_failure_ids(expected: dict[str, str], baseline: dict[str, str],
                    candidate: dict[str, str]) -> list[str]:
    if not expected or set(expected) != set(baseline) or set(expected) != set(candidate):
        raise ValueError("Expected, baseline, and candidate need the same nonempty ID set")
    return sorted(key for key, answer in expected.items()
                  if baseline[key] == answer and candidate[key] != answer)


def slice_accuracy(cases: list[dict], outputs: dict[str, str], slice_name: str) -> float:
    if {case["id"] for case in cases} != set(outputs):
        raise ValueError("Outputs must match the full case set")
    members = [case for case in cases if case["slice"] == slice_name]
    if not members:
        raise ValueError("Named slice has no cases")
    return sum(outputs[case["id"]] == case["expected_route"] for case in members) / len(members)

Download this source file