from pydantic import BaseModel, Field from typing import List class Solution(BaseModel): """解决方案模型 表示24点游戏的一个解法 """ expression: str = Field(alias="c") flag: int = Field(alias="f") @classmethod def from_dict(cls, data): return cls.model_validate(data) class GameData(BaseModel): """游戏数据模型 表示24点游戏的一组数据,包含四个数字和对应的解法 """ id: int num1: int = Field(alias="n1") num2: int = Field(alias="n2") num3: int = Field(alias="n3") num4: int = Field(alias="n4") solutions: List[Solution] = Field(alias="s") @property def no(self): return f"{self.num1}_{self.num2}_{self.num3}_{self.num4}" @classmethod def from_dict(cls, data): data['s'] = [Solution.from_dict(sol) for sol in data['s']] # 保持原始JSON键's'的解析 return cls.model_validate(data)