使用python basic的嵌套列表
给出N个学生班级中每个学生的姓名和成绩, 将其存储在嵌套列表中,并打印任何学生的姓名 具有第二低等级的 注:如果有多个学生的成绩为第二低, 按字母顺序排列他们的名字,并将每个名字打印在新行上 范例使用python basic的嵌套列表,python,Python,给出N个学生班级中每个学生的姓名和成绩, 将其存储在嵌套列表中,并打印任何学生的姓名 具有第二低等级的 注:如果有多个学生的成绩为第二低, 按字母顺序排列他们的名字,并将每个名字打印在新行上 范例 reords = [['chi', 20.0], ['bela', 50.0], ['alpha', 50.0]] 分数的有序列表是[20.0,50.0],因此第二低的分数 是50.0有两个学生的分数是:['beta','alpha']。 名称按字母顺序打印为: 输入格式: 第一行包含一个整数,N
reords = [['chi', 20.0], ['bela', 50.0], ['alpha', 50.0]]
分数的有序列表是[20.0,50.0],因此第二低的分数
是50.0有两个学生的分数是:['beta','alpha']。
名称按字母顺序打印为:
输入格式:
第一行包含一个整数,N,学生人数。2N
后面的几行描述每个学生超过2行
- 第一行包含一个学生的名字
- 第二行是他们的成绩
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
样本输出0
Berry
Harry
这是我的建议代码:
if __name__ == '__main__':
student = []
values = []
names =[]
for _ in range(int(input())):
name = input()
score = float(input())
student.append([name, score])
for item in student:
values.append(item[1])
values.sort()
for item in student:
if item[1] == values[1]:
names.append(item[0])
names.sort()
for name in names:
print(name)
当我在jupiter笔记本上运行代码时,我有相同的简历。但是当我在测试编辑器中运行相同的代码时,我有一个错误。我不明白
算法是:
- 将所有学生及其分数添加到列表
reords
- 带有唯一标记的排序列表(使用
)set
- 筛选列表以获取具有第二个min标记的学生
- 打印每个筛选学生的姓名
我敢肯定这里已经有人问过一个非常类似的问题,错误是有些输入代码无法处理。用屏幕截图中的完整输入测试它,看看会发生什么。我不知道,但我想对这个问题有更多的解释。请看这张图片,看看我想谈什么汉克的,彼得。让我看一下,然后再运行一次可能的抱歉,我有两个相同的错误你可以在这里测试你的代码:你能发布你的代码吗?请看一下?@AmounguiSerge,你可以在我的答案中看到:)不过,酷,你的代码工作正常。这是正确的。谢谢你的帮助。
if __name__ == '__main__':
reords = []
for _ in range(int(input())):
name = input()
score = float(input())
reords.append([name, score])
mark = sorted(set(map(lambda x: x[1], reords)))[1]
for n, m in sorted(filter(lambda x: x[1] == mark, reords)):
print(n)