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

时间:2020-03-18 17:15:34

标签: python dictionary

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

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,但是我试图在没有正则表达式的情况下实现相同的目的。

编辑:

我应该指出,字典classroom的作用类似于模板。它按原样传递给类。占位符变量是在执行过程中产生的,我想在不使用键的情况下对其进行更新。

当然预期的输出是

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

但是以某种方式从grades“解包”到classroom

另一个编辑:

现在说原来的classroom更改为

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

grades保持不变。我之所以要“解压”,是因为我只想在1个地方(classroom)修改键,并且占位符被填充,而我也不必修复其他部分({ {1}}。

3 个答案:

答案 0 :(得分:0)

这是您要寻找的吗?

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

答案 1 :(得分:0)

您只需要一个功能:

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

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

答案 2 :(得分:0)

我认为类似的方法也可以:

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)