【发布时间】:2014-12-12 10:50:33
【问题描述】:
这是我正在进行的一个小项目,但我对代码的以下部分有点卡住了。
如您所见,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()
【问题讨论】:
-
使用学生姓名作为键来区分每个字典或为字典中的每个字典增加一个 id
-
@PadraicCunningham 谢谢。这就是我一直在思考的问题——区分这些字典的最佳方法是什么。
-
我将在几秒钟内发布一个示例
标签: list python-3.x dictionary iteration