我应该如何循环一个Python2.6 dict并有效地检查另一个dict以查看是否存在相同的键?

我应该如何循环一个Python2.6 dict并有效地检查另一个dict以查看是否存在相同的键?,python,Python,在Python2.6中,我有一个学生的课程作业记录,我正在循环,然后对照第二个课程要求记录检查学生是否满足了这些要求。我的代码开始变得有点难看了,因为我目前正在循环一个FOR循环的需求口述,并检查学生的课程口述中列出的每个需求。这会导致在同一个dict中多次循环,因为有些循环取决于学生是否是某个专业的学生,是否在某个学校注册,等等。因此,每次我进入循环时,都要对不同“IF”子句上的相同数据求值 所以我想到一定有更好的方法,对吧?我担心我的页面加载时间会成倍增长,因为我为同一页面加载在同一个dic

在Python2.6中,我有一个学生的课程作业记录,我正在循环,然后对照第二个课程要求记录检查学生是否满足了这些要求。我的代码开始变得有点难看了,因为我目前正在循环一个FOR循环的需求口述,并检查学生的课程口述中列出的每个需求。这会导致在同一个dict中多次循环,因为有些循环取决于学生是否是某个专业的学生,是否在某个学校注册,等等。因此,每次我进入循环时,都要对不同“IF”子句上的相同数据求值

所以我想到一定有更好的方法,对吧?我担心我的页面加载时间会成倍增长,因为我为同一页面加载在同一个dict中添加了多次循环(更不用说这会成为维护的噩梦)。我希望有一种方法可以做到:

if dict1{key} in dict2{key}:
    if other dependent conditions are True (e.g. non_business_major, etc):
        do something, set a var to True, etc.
编辑:…添加dicts示例

# -------------------------------------------
acad_hist_condensed: [{'semester_hours_passed': u'2', 'fos': u'MUS', 'grade': u'B', 'topic_number': u'0', 'ccyys': u'20072', 'compressed_hist_crse_id': u'MUS 201J0', 'crse_number': u' 201J'}, {'semester_hours_passed': u'2', 'fos': u'MUS', 'grade': u'C', 'topic_number': u'0', 'ccyys': u'20079', 'compressed_hist_crse_id': u'MUS 201K0', 'crse_number': u' 201K'},...

# -------------------------------------------
course_reqs: [{'_created_by': u'kre86', '_updated': datetime.datetime(2014, 3, 24, 8, 56, 19), 'topic_nbr': u'0', 'requirement_group': u'Prereq', 'fos': u'FIN', 'crse_nbr': u' 320F', 'program_id': 1237L, 'major_group': u'Non-Bus', 'crse_title': u'', '_updated_by': u'kre86', '_created': datetime.datetime(2014, 3, 24, 8, 56, 19), 'id': 2L}, {'_created_by': u'kre86', '_updated': datetime.datetime(2014, 3, 24, 8, 57, 2), 'topic_nbr': u'0', 'requirement_group': u'Prereq', 'fos': u'FIN', 'crse_nbr': u' 357', 'program_id': 1237L, 'major_group': u'Bus', 'crse_title': u'', '_updated_by': u'kre86', '_created': datetime.datetime(2014, 3, 24, 8, 57, 2), 'id': 3L}, 
编辑:…忘了添加我现在正在做的事情的示例。这只是我做这种循环次数的一小部分

# -------------------------------------------
# look for non-business major recommended
if course_req['requirement_group'] == 'Recommended'\
        and course_req['major_group'] == 'Non-Bus'\
        and is_business_student is False:
    for hist in acad_hist_condensed:
        if hist['compressed_hist_crse_id'] == compressed_course_req:
            non_bus_recomm_met = True
            non_bus_recomm_crse = hist

任何帮助都将不胜感激。谢谢

所以,简单地说,如果我理解正确,你想检查某个学生是否已修完所有必修课程。如果允许您更改数据结构,您可以在主题中列出学生的
课程和所需的
课程。在这种情况下,

qualifies = all(course in courses_taken for course in courses_required)

如果所有课程都已修完,则设置为true,否则设置为false。

请给出两个
指令的某种表示形式以及您当前正在做的事情。@sshashank124我已添加了您要求的一些详细信息。dict片段被截断。而且,它们是列表中的dict。谢谢谢谢你…这很有帮助。如果我理解正确,我需要一份反映学生课程作业的静态课程记录,然后将其与另一份定义所需要求的记录进行比较,对吗?假设是这样,我想我可以为上述所有情况(如非商业专业、金融专业等)创建一个课程要求的口述,并根据需要与相应的口述进行比较,对吗?有没有办法记录学生所修的课程符合要求?换句话说,捕获与给定评估匹配的需求?不,它们都是列表。如果您在字典中有这些信息,您可以使用.keys()或.values()提取这些信息。如果学生不符合条件,您可以通过以下方式获得必修课程列表:
[course for courses in courses\u take If courses in courses\u required]
;或者添加一个不需要他们所需要的课程的列表。这似乎是一个理解列表,对吗?由于我仍然在Py 2.6中,我想我可以将其分解为一个嵌套的if,在for循环中,对吗?列表理解是从v.2.0开始在Python中使用的,我想后来添加了一些东西(生成器?),但在2.6中肯定有足够的内容来使用它。