<p>您可以考虑将您的结构从元组列表更改为字典,因为这样可以更容易地操作信息。你知道吗</p>
<pre><code>def transcript(coursedetails, studentdetails, grades):
result = {}
students = {}
courses = {}
for course, descript in coursedetails:
courses[course] = descript
for sid, student in studentdetails:
students[sid] = {'name':student}
for sid, course, grade in grades:
details = (course, courses[course], grade)
if not 'grades' in students[sid]:
students[sid]['grades'] = []
students[sid]['grades'].append(details)
return students
</code></pre>
<p>这将为您的成绩单返回一个字典字典,其中学生ID是返回包含学生姓名和成绩的字典的键。你知道吗</p>
<p>测试:</p>
<pre><code>trans = transcript([("MA101","Calculus"),("PH101","Mechanics"),("HU101","English")],[("UGM2018001","Rohit Grewal"),("UGP2018132","Neha Talwar")],[("UGM2018001","MA101","AB"),("UGP2018132","PH101","B"),("UGM2018001","PH101","B")])
</code></pre>
<p>结果:</p>
<pre><code>{'UGM2018001': {'name': 'Rohit Grewal', 'grades': [('MA101', 'Calculus', 'AB'), ('PH101', 'Mechanics', 'B')]}, 'UGP2018132': {'name': 'Neha Talwar', 'grades': [('PH101', 'Mechanics', 'B')]}}
</code></pre>
<p>如果您仍然希望在上面描述的所需输出中包含这些信息,那么下面将根据需要创建一个元组列表。你知道吗</p>
<pre><code>list((k,v['name'], v['grades']) for k,v in trans.items())
</code></pre>