Pydantic:如何将str和list传递给同一个变量



我有一个程序,插入响应到MongoDB集合。有些问题需要多次回答。有多个回答的问题使用复选框,需要一个回答的问题使用单选按钮。

复选框的值存储在数组中,而单选按钮的值存储为字符串。我的问题是,如果用户选择了一个复选框,它会将其插入到DB中,但会通过错误产生多个响应。我怎样才能使我的代码接受列表和str基于什么是选择?

下面是我的示例代码

index.ts

questionAnswers: string | strong[]

submit.py

questionAnswers: Optional[str]

如何实现在索引中找到的相同逻辑。提交。py?

谢谢

假设我有两个不同选项的问题。例如:

问题1提问:"你是怎么知道我们公司的?"选项:['friends', 'radio', 'tv']上面的选项是一个复选框

问题2提问:"你能帮我吗?"选项:"是"否"它使用了一个单选按钮

每个选项都有一个点。我想把所有选项的分数加起来。因此,如果用户选择[friends, radio]和yes,我想检查所选内容是否在选项中,代码如下:

for index, question in enumerate(questions):
questionScore = question['options'].index(question['questionAnswers'])

string | string[]等价的Python类型是Union[str, List[str]]。从Python 3.10开始(参见https://www.python.org/dev/peps/pep-0604/),您还可以执行str | List[str]

如果你遇到了运行时错误,你需要在运行时检查类型,例如:

def handle(question_answers: Union[str, List[str]]):
if isinstance(question_answers, list):
# do thing with list
elif isinstance(question_answers, str):
# do thing with str
else:
raise TypeError("somebody forgot to run mypy")

最新更新