假设:
stu={2001:[80,89,90],
2002:[60,89,51],
2003:[82,87,90],
2004:[50,89,60],
2005:[90,90,92],
2006:[86,89,94],
2007:[60,91,90],
2008:[87,92,93],
2009:[100,89,90],
2010:[87,89,90]}
这里使用字典存储学生的学号和三门课程成绩输出,要求输出每门课前三名的学号信息。
关键技术——字典按键、值排序
d={"ok":1,"no":2}
#对字典按键排序,用元组列表的形式返回
d1 = sorted(d.items(), key=lambda d:d[0],reverse = False) #[('no', 2), ('ok', 1)]
#对字典按值排序,用元组列表的形式返回
d2 = sorted(d.items(), key=lambda d:d[1],reverse = False) #[('ok', 1), ('no', 2)]
print (d1,'\n',d2)
输出结果:
[('no', 2), ('ok', 1)]
[('ok', 1), ('no', 2)]
sorted(dict.items(), key=lambda e:e[0], reverse=True)
里面三个参数
- dict.items() #可迭代元素。
- key= lambda d:d[0]#d[0]表示按键,d[1]表示按值。
- reverse#默认是False,升序排列。当值为True时是降序排列。
返回的是一个列表,列表中是排列后的元组。
解决方案:
#按第一门课排序
d1 = sorted(stu.items(), key=lambda stu:stu[1][0],reverse = True)#默认是False,升序排列
print(d1)
#输出前三名学号
d=d1[:3]
print("第一门前三名学号:",d[0][0],d[1][0],d[2][0])
#按第2门课排序
d2 = sorted(stu.items(), key=lambda stu:stu[1][1],reverse = True)#默认是False,升序排列
print(d2)
#输出前三名学号
d=d2[:3]
print("第2门前三名学号:",d[0][0],d[1][0],d[2][0])