Python 中嵌套字典的语法

问题描述

我正在开发 Python 脚本,用于使用 CanvasAPI 自动评分作业,CanvasAPI 是用于 Canvas 学习管理平台的 Python 中的 API 包装器。在研究文档的过程中,我可以成功地在 Python 中为几个参数发出 curl 命令。例如,下面的转换用于上传单个提交的评分准则信息:

Curl command per the Canvas API docs:

PUT /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id

与:

rubric_assessment[criterion_id][points]

Turns into this via the CanvasAPI Python wrapper

edit(rubric_assessment={'criterion_#':{'points': 'point #'}})

但是,我在添加附加参数的语法方面遇到困难,这会创建似乎是嵌套字典的内容。例如,如果我想添加文本评论和成绩点,API 文档提供了这个:

rubric_assessment[criterion_id][comments]

我已经尝试过:

edit(rubric_assessment={'criterion_#':{'points': 'point #'},{'criterion_#':{'comments': 'comment_text'}}})

产生语法错误

SyntaxError: positional argument follows keyword argument

我也尝试过:

edit(rubric_assessment={'criterion_#':{'points': 'point #'},{'comments': 'comment_text'}})

产生此错误

SyntaxError: expression cannot contain assignment,perhaps you meant "=="?

构建传递两个参数的语法的正确方法是什么?非常感谢您提供的任何见解和帮助。

解决方法

来自 rubric_assessment[criterion_id][comments],看来你需要,edit(rubric_assessment={'criterion_#':{'points': 'point #','comments':'comment_text'}})