回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在一个初级的编码班,我似乎不能把我所教的基础知识变成一个有着如此复杂的列表的工作程序。我应该使用什么函数来执行此操作?在</p>
<p>在这一点上,我们还没有讨论导入任何额外的特性(numpy等等),我知道人们经常使用lambda(尽管我不太明白它的作用),但是这门课还没有介绍过。在</p>
<pre><code>#This is an example of the structure of a student dictionary
#They have an id number
#They have a first name, last name and a list of assignments
#Assignments are tuples of an assignment name and grade
#The grade is a 4 point scale from 0 to 4
'''
student_list = [{'id': 12341, 'first_name': 'Alice', 'last_name': 'Anderson',
'assignments': [('assignment_1', 0), ('assignment_2', 2), ('assignment_3', 4)]},
{'id': 12342, 'first_name': 'Boris', 'last_name': 'Bank',
'assignments': [('assignment_1', 1), ('assignment_2', 3), ('assignment_3', 0)]},
{'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape',
'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]},
{'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson',
'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]},
{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders',
'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}]
#This function should return a list of the n student dictionaries with the
#highest grades on the assignment passed in as assignment name
#If there is a tie then it is broken by returning the student(s) with the
#lowest id number(s)
def highest_n_grades(students, assignment_name, n):
</code></pre>
<h2>编辑</h2>
<p>对不起,我不想得到答案。我明白了。我觉得我写了很多东西,删除了很多,这就是我的问题。我连开始都有困难。在</p>
<p>我希望在正确的方向上找到一个正确的方向,比如什么命令可以获得最高的分数等等。到目前为止,我真正拥有的是:</p>
^{pr2}$
<p>但我知道这并不能让我真正开始。它没有三个输入,也没有寻找最大值,它在寻找手动输入的值4,它甚至没有接近于将at与学生姓名联系起来,也没有形成另一个列表。在</p>
<h2>编辑2</h2>
<p>我也试过了,结果出了一个错误,我试着对字典而不是列表进行排序。在</p>
<pre><code>def highest_n_grades(student_list, assignment_name):
for s in student_list:
for assignment_name in s['assignments'][1]:
s['assignments'][1] = assignment_name
s.sort(key=assignment_name)
print(student_list)
highest_n_grades(student_list, assignment_name='assignment_1' )
</code></pre>
<h2>编辑3</h2>
<p>好吧,我也许有点进展了?在</p>
<pre><code>newlist2 = sorted(newlist, key=lambda k: k['assignments'][0], reverse = True)
newlist3 = sorted(newlist, key=lambda k: k['assignments'][1], reverse = True)
newlist4 = sorted(newlist, key=lambda k: k['assignments'][2], reverse = True)
</code></pre>
<p>这些似乎是按任务排序的。我不明白lambda在做什么,但我至少可以生成一个最高分的列表。我觉得这只是小步走。在</p>
<h2>编辑4</h2>
<p>这是我创建的一个函数。它似乎得到了我想要的,它输出最高的3个学生,但它打印了5次?我知道这不是很灵活,但这只是个开始。在</p>
<pre><code>def highest_n_grades(student_list, n):
for s in student_list:
newlist = sorted(student_list, key=lambda k: k['assignments'][0], reverse=True)
print(newlist[:n])
highest_n_grades(student_list, 3)
</code></pre>
<p>输出:</p>
<pre><code>[{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]
[{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]
[{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]
[{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]
[{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]
</code></pre>