哈啰,欢迎大家收看我的频道。前几天回了一趟老家,没有电脑所以没有更新。那么我们今天接着来讲python编程100题。话不多说,我们直接看题。
11.学生成绩排序
学生成绩数据格式
复杂列表,元素是字典或者元组
[
{"学号": 1, "姓名": "张三", "成绩": 75}, {"学号": 2, "姓名": "李四", "成绩": 96}, {"学号": 3, "姓名": "王五", "成绩": 93}, {"学号": 4, "姓名": "赵六", "成绩": 87},
我们上次涉及到了对简单列表的排序,今天的主要内容是对复杂列表的排序。我们首先应该想到的思路是,我们定义完列表之后,我们通过key(键值)来引用对应的数值来进行排序。那么下面是我们的解题思路。
解答:
首先呢,我们要先把整个列表给定义进去。
然后,对列表内容进行排序,其中我们运用lambda函数,避免了我们再次定义函数,节省空间与时间。
最后,我们将整理好的列表进行输出。因为是对学生成绩进行输出,这里我们采取,不改变原列表的方式,输出一个整理好的新列表的方式来解决。
代码如下:
students = \
[
{"学号": 1, "姓名": "张三", "成绩": 75},
{"学号": 2, "姓名": "李四", "成绩": 96},
{"学号": 3, "姓名": "王五", "成绩": 93},
{"学号": 4, "姓名": "赵六", "成绩": 87},
]
students_zhengli = sorted(students,
key=lambda x: x["成绩"],
reverse=True)
print(students_zhengli)
输出结果
那么,下面我们来看第12题。
12.读取文件排序
解答:
这道题,相比于前面的题来说,复杂不少。首先因为题是要我们通过文件的方式排序。那我们第一件事首先需要我们创建一个可读写的文件,来储存数据。
其次,我们可以把这道题分为三个步骤,我们按部就班的来做。
首先,我们需要读取文件;然后,对文件内的数据进行排序;最后,我们输出文件即可。理论存在,代码如下:
def read_file():
result = []
with open("./学生成绩") as fin:
for line in fin:
line = line[:-1]
result.append(line.split(","))
return result
def chengjishuchu(datas):
return sorted(datas,
key=lambda x : int(x[2]),
reverse=True)
datas = read_file()
print("文件数据为:", datas)
datas = chengjishuchu(datas)
print("排序结果为:", datas)
输出结果:
第12题算得上是比较复杂的一道题,还希望大家好好看看代码,多多理顺一下思路,如果有更好的方法,欢迎讨论,我们一起进步。