我正在处理一个数据集,并且同样大量正在处理的数据存储在字典中。随着数据的处理,许多密钥都在更新。
为了避免检查每个级别的键是否存在,我选择以静态方式创建结构,其中我使用默认值加载键的值。
例子:
Student : {
"Name" : "",
"Exam" : {
"Math" : {"Marks_Obtained" : 0, "Total_Question" : 100, .... some more keys }
}
}
现在,当我遇到另一个考试统计时说“英语”以避免检查密钥是否存在的操作,我使用默认值预先配置了结构。所以现在我的结构看起来像这样。
Student : {
"Name" : "",
"Exam" : {
"Math" : {"Marks_Obtained" : 0, "Total_Question" : 100, .... some more keys },
"Eng" : {"Marks_Obtained" : 0, "Total_Question" : 100, .... some more keys },
"Hist" : {"Marks_Obtained" : 0, "Total_Question" : 100, .... some more keys },
"Bio" : {"Marks_Obtained" : 0, "Total_Question" : 100, .... some more keys }
}
}
现在有些学生可能不会选择考试。我想删除整个结构。假设学生没有选择我要删除的历史 (del["Exam"]["Hist"])。
我不想动态生成结构,因为值在用户给出的考试中更新得非常频繁,并且为每次迭代检查结构的有效性将意味着额外的 O(1) 过程。
我想做的是有效地删除未使用的密钥。我不想使用 for 循环进行循环,因为这又是一种低效的方式。
如果有任何疑问,请随时发表评论。
让我知道你的想法!