<p>这可以通过<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>实现:</p>
<pre><code>from collections import defaultdict
inputs = [("MA101","Calculus"),("PH101","Mechanics"),("HU101","English")],\
[("UGM2018001","Rohit Grewal"),("UGP2018132","Neha Talwar")],\
[("UGM2018001","MA101","AB"),("UGP2018132","PH101","B"),("UGM2018001","PH101","B")]
def transcript(coursedetails, studentdetails, grades):
d = defaultdict(list)
courses, students = dict(coursedetails), dict(studentdetails)
for grade in grades:
d[(grade[0], students[grade[0]])].append((grade[1], courses[grade[1]], grade[2]))
return d
res = transcript(*inputs)
</code></pre>
<p><strong>结果</strong></p>
<pre><code>defaultdict(list,
{('UGM2018001', 'Rohit Grewal'): [('MA101', 'Calculus', 'AB'),
('PH101', 'Mechanics', 'B')],
('UGP2018132', 'Neha Talwar'): [('PH101', 'Mechanics', 'B')]})
</code></pre>
<p>如果您真的需要一个元组列表,这很容易转换:</p>
<pre><code>res2 = [(k[0], k[1], v) for k, v in res.items()]
# [('UGM2018001', 'Rohit Grewal', [('MA101', 'Calculus', 'AB'),
# ('PH101', 'Mechanics', 'B')]),
# ('UGP2018132', 'Neha Talwar', [('PH101', 'Mechanics', 'B')])]
</code></pre>