All courses · Course overview · Lesson sequence
Skip to lesson textsolutions/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)