在列表中列出n个词典

时间:2014-10-16 22:41:46

标签: list python-3.x dictionary iteration

这是一个我正在研究的小项目,但我对我的代码的以下部分感到困惑。

如您所见,j是一个代表学生成绩的字典。我希望j从1到n不等,其中n是一个班级中学生的总数,但因为每个字典(对应于每个学生)没有不同的名称,所以代码以“等于是” “将每个学生的成绩附加到每个词典的所有ex或hw值(除了与模型对应的词典)。

修改j的最佳方法是什么,以便我可以在unique_id中输入n个学生?

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

unique_id = [] 

model = {                    
    "Last": "Total",     
    "First": "Possible on",
    "id": "000000",
    "ex": [],
    "hw": []
    }
unique_id.append(dict(model))

yes = {"yes", "ye", "y"}
ex = {"ex", "e", "exam"}
hw = {"hw", "h", "homework"}

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

new_person = input("New student? Type YES or NO. ").lower()

while new_person in yes:   
    j["Last"] =  input("Last Name: ")    
    j["First"] = input("First Name: ")
    j["id"] = input("ID: ")
    unique_id.append(dict(j)) 
    new_person = input("New student? Type YES or NO. ").lower()

grades = input("Input grades? ").lower()

while grades in yes:
    option_grades = input("Pick EX, HW: ").lower()
    if option_grades in ex:
        for i in list(range(len(unique_id))):
            unique_id[i]["ex"].append(input("%s %s Exam: " % (unique_id[i]["Last"], unique_id[i]["First"])))
    elif option_grades in hw:
        for i in list(range(len(unique_id))):
            unique_id[i]["hw"].append(input("%s %s HW: " % (unique_id[i]["Last"], unique_id[i]["First"]))) 


    grades = input("Input more grades? ").lower()

1 个答案:

答案 0 :(得分:1)

您可以创建一个包含相关信息的模板字典,然后您可以增加模板并为每个学生增加dict_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等中。但这应该可以帮助您入门。