在python

时间:2019-02-23 02:47:05

标签: python python-3.x dictionary

我有一本字典,谁的键是学生ID#,而值是另一本字典。嵌套字典具有列表中的键,这些键说明作业的类型,值是作业的等级。

因此,我尝试更改每个作业的成绩列表(以降低最低成绩,取平均分数等),但是我想不出一种方法将其从字典中挑选出来。

这是字典的一部分:

D = {"123-45-6789":{"hw":[98,89,92,75], "quiz":[45,36,42,50,29,27,40,41], "exam":[175,157]}, "534-77-9326":{"hw":[67,89,55,78], "quiz":[78,45,67,23,45,78,88,91], "exam":[187,146]},   ....... etc.

任何帮助将不胜感激。

***并且我忘了提到我计划遍历字典以编辑每个年级列表,因为有很多学生证号。所以我想我真正要问的是: 语法是指每个学生ID#,然后是每个ID#

每个成绩列表的语法

2 个答案:

答案 0 :(得分:0)

您可以使用赋值表达式在字典中获取列表:

lst = students_grades_dictionary["123-45-6789"]["hw"]

您可以使用弹出功能从列表中删除成绩:

lst.pop(<grade index>)

由于lst是对成绩列表的引用,因此您对它所做的任何更改也会更改词典中的成绩列表。

答案 1 :(得分:0)

找到列表的长度后,可以混合使用list.removemin()

max_size = 4
new_score = 87
hw_list = data[student_id]['hw']

if len(hw_list) >= max_size - 1:
    hw_list.remove(min(hw_list))

hw_list.append(new_score)

注意,如果列表已经比指定的最大值len大2个以上,则此方法将无法处理。