<p>清单理解的小练习:</p>
<pre><code>students = [{'123': [{'course1': 2}, {'course2': 2}]},
{'124': [{'course1': 3}, {'course2': 4}]},
{'125': [{'course1': 24}, {'course2': 12}]},
{'126': [{'course1': 2}, {'course2': 24}]}]
finals = [{'student_number':'123', 'exam':'passed',},
{'student_number':'124', 'exam':'ungraded',},
{'student_number':'125', 'exam':'failed',},]
# Extract student id numbers.
student_ids = set(
student_data.keys()[0]
for student_data in students)
# Restrict finals to the students that exist in students.
students_with_finals = [
final
for final in finals
if final['student_number'] in student_ids]
passed_students = [
final['student_number']
for final in students_with_finals
if final['exam'] == 'passed']
other_students = [
final['student_number']
for final in students_with_finals
if final['exam'] != 'passed']
print('Passed students: {}'.format(passed_students))
print('Other students: {}'.format(other_students))
</code></pre>
<p>结果:</p>
<pre><code>Passed students: ['123']
Other students: ['124', '125']
</code></pre>
<p>似乎可以通过使用以学生ID为键的字典来简化数据结构:</p>
<pre><code>students = {
'123': [{'course1': 2}, {'course2': 2}],
'124': [{'course1': 3}, {'course2': 4}],
'125': [{'course1': 24}, {'course2': 12}],
'126': [{'course1': 2}, {'course2': 24}],
}
finals = {
'123': {'exam':'passed', 'points': 100},
'124': {'exam':'ungraded'},
'125': {'exam':'failed'},
}
</code></pre>