List 列表中的n个字典中的列表

List 列表中的n个字典中的列表,list,python-3.x,dictionary,iteration,List,Python 3.x,Dictionary,Iteration,这是一个我正在进行的小项目,但我有点被我的代码的以下部分卡住了 如你所见,j是一本代表学生成绩的字典。我希望j从1变为n,其中n是一个类中的学生总数,但是由于每个字典(对应于每个学生)没有一个明确的名称,以“whilegradesin yes”开头的代码将每个学生的分数附加到每个字典的所有ex或hw值(对应于model的字典除外). 修改j的最佳方式是什么,这样我就可以在unique_id中输入n个学生 编辑:我可以用j_one、j_two等替换j,复制并粘贴“空”词典,但我认为如果你有280

这是一个我正在进行的小项目,但我有点被我的代码的以下部分卡住了

如你所见,j是一本代表学生成绩的字典。我希望j从1变为n,其中n是一个类中的学生总数,但是由于每个字典(对应于每个学生)没有一个明确的名称,以“whilegradesin yes”开头的代码将每个学生的分数附加到每个字典的所有ex或hw值(对应于model的字典除外).

修改j的最佳方式是什么,这样我就可以在unique_id中输入n个学生

编辑:我可以用j_one、j_two等替换j,复制并粘贴“空”词典,但我认为如果你有280名学生(假设是这样的话),这项工作就太多了


您可以创建一个包含相关信息的模板dict,您可以增加然后添加一个模板,并为每个学生增加
dict\u id

 template ={
    "Last": "",
    "First": "",
    "id": "",
    "ex": [],
    "hw": []
}
j ={

}

new_person = input("New student? Type YES or NO. ").lower()
dict_id = 1
while new_person in yes:
    j[dict_id] = template # add new template for each student
    j[dict_id]["Last"] = input("Last Name: ")
    j[dict_id]["First"] = input("First Name: ")
    j[dict_id]["id"] = input("ID: ")
    unique_id.append(dict(j))
    new_person = input("New student? Type YES or NO. ").lower()
    dict_id += 1 # increment id

你可能需要添加更多的逻辑,比如检查学生是否已经在听写中等。。但这应该让你开始了。

使用学生姓名作为键来区分每个dict,或者为dict中的每个dict增加一个iddicts@PadraicCunningham谢谢这就是我一直在思考的——区分这些词典的最佳方式是什么。我将在一篇文章Hanks Padraic中发布一个例子!这正是我一直在寻找的!我想到了j[k],其中k从0到n(或n-1)运行,但我想不出一个好的方法来进行设置。不用担心,不客气。这并不完美,但应该会让你更接近。您也可以在范围内迭代,不需要强制转换为列表
,因为范围内的i(len(unique_id))
可以正常工作
 template ={
    "Last": "",
    "First": "",
    "id": "",
    "ex": [],
    "hw": []
}
j ={

}

new_person = input("New student? Type YES or NO. ").lower()
dict_id = 1
while new_person in yes:
    j[dict_id] = template # add new template for each student
    j[dict_id]["Last"] = input("Last Name: ")
    j[dict_id]["First"] = input("First Name: ")
    j[dict_id]["id"] = input("ID: ")
    unique_id.append(dict(j))
    new_person = input("New student? Type YES or NO. ").lower()
    dict_id += 1 # increment id