在python中使用占位符变量创建和更新字典

2024-05-01 21:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力实现这样的目标

classroom = {"john" : {"grade_math": placeholder_grade_math,
                       "grade_physics": placeholder_grade_physics}

然后

grades = {"placeholder_grade_math": str(10),
          "placeholder_grade_physics": str(8))

所以现在我想将grades的键与classroom的占位符匹配并更新它。有什么类似Python的方法吗

我遇到过这个question,但我正试图在没有regexp的情况下实现同样的效果

编辑:

我应该指出,dictclassroom的工作原理与模板类似。它按原样传递给类。占位符变量是在执行过程中生成的,我希望在不使用键的情况下更新它们

当然,预期的输出是

classroom = {"john" : {"grade_math": "10",
                       "grade_physics": "8"}

但不知何故,从gradesclassroom的“解包”

另一编辑:

现在假设原始的classroom更改为

classroom = {"john" : {"grade_math": placeholder_grade_math,
                       "grade_physics": placeholder_grade_physics,
                       "grade_geometry": placeholder_grade_geometry}

但是grades保持不变。我之所以选择“解包”,是因为我希望只在一个位置(即classroom)修改键,并且占位符被填充,而不必修复其他部分(grades


Tags: 方法编辑目标情况mathjohnplaceholdergrade
3条回答

我认为这样做也会奏效:

def getStudentGrades(**kwargs):
  classroom = {"john" :
   {
    "grade_math": kwargs["placeholder_grade_math"],
    "grade_physics": kwargs["placeholder_grade_physics"],
    "grade_geometry": kwargs["placeholder_grade_geometry"]
   }
  } 

  return classroom

if __name__ == "__main__":

  kwargs = {
   "placeholder_grade_math": str(10),
   "placeholder_grade_physics": str(8),
   "placeholder_grade_geometry": None
  }
   ### you can change geometry grades from None to 
   ### whichever score you would like, using `None` for reference.
  getJohnsGrade = getStudentGrades(**kwargs)
  print(getJohnsGrade)

您只需要一个函数:

def make_classroom(grades):
    return {
               "john": {
                           "grade_math": grades['math'],
                           "grade_physics": grades['physics']
                       }
           }

classroom = make_classroom({'math': "10", 'physics': "8"})

这就是你要找的吗

classroom = {"john" : {"grade_math": grades['placeholder_grade_math'],"grade_physics": grades['placeholder_grade_physics']}}

相关问题 更多 >