【发布时间】:2021-05-19 01:19:38
【问题描述】:
我正在解决一个问题,说明如下:
编写一个函数,根据阈值区分接受和拒绝的学生。 该函数应称为 select_student 并作为参数: 一个列表,其中每个元素都是一个学生姓名和他的标记的列表。 标记。学生的分数必须高于或等于给定的分数才能被接受。 您的函数必须返回一个包含两个条目的字典: Accepted 列出了按分数降序排列的被录取学生。 拒绝 哪些被拒绝的学生按分数升序排列。 示例
In [1]: from solution import select_student
In [2]: my_class = [['Kermit Wade', 27], ['Hattie Schleusner', 67], ['Ben Ball', 5], ['William Lee', 2]]
In [3]: select_student(my_class, 20)
Out[3]:
{'Accepted': [['Hattie Schleusner', 67], ['Kermit Wade', 27]],
'Refused': [['William Lee', 2], ['Ben Ball', 5]]}
In [4]: select_student(my_class, 50)
Out[4]:
{'Accepted': [['Hattie Schleusner', 67]],
'Refused': [['William Lee', 2], ['Ben Ball', 5], ['Kermit Wade', 27]]}
我的代码是:
from collections import OrderedDict
students = [
["Kermit Wade", 27],
["Hattie Schleusner", 67],
["Ben Ball", 5],
["William Lee", 2],
]
def select_student(students, threshold):
output = {
'Accepted' : [],
'Refused' : []
}
for i in range(len(students)):
if students[i][1] >= threshold:
output['Accepted'].append(students[i])
elif students[i][1] < threshold:
output['Refused'].append(students[i])
return output
我的输出是:
{'Accepted': [['Kermit Wade', 27], ['Hattie Schleusner', 67]], 'Refused': [['Ben Ball', 5], ['William Lee', 2]]}
输出是针对这些参数的
print(select_student(students, 20))
如您所见,我需要颠倒接受和拒绝的顺序。所以海蒂先接受,然后威廉先拒绝。
我尝试使用 OrderedLists 和谷歌搜索,但由于问题所需的嵌套列表结构,我找不到按等级排序的方法,也找不到根据字典的升序和降序排序的方法键。
提前致谢!
【问题讨论】:
-
字典是默认排序的,只要你使用的是python3.6+
-
如何按一个键升序,另一个键降序排列?
标签: python-3.x ordereddictionary