python 练习题- 列表排序

题目:

 1 第一行输入人员数
 2 第二行到第N行(小于等于100),每行输入三个变量,第一个名称,第二个人员编号,第三个数量
 3 
 4 要求:
 5 1.先按照名称从小到大排序
 6 2.名称相同,按照数量排序
 7 3.数量相同按照人员编号排序
 8 
 9 例:
10 输入:
11 
12 3
13 cc 3 11
14 aa 3 22
15 aa 2 22
16 ab 1 33
17 
18 输出:
19 aa 2 22
20 aa 3 22
21 ab 1 33
22 cc 3 11

 

 

答案:

 1 import sys
 2 if __name__ == "__main__":
 3     # 第一行的n
 4     n = int(sys.stdin.readline().strip())
 5     toallList = []
 6     for i in range(100):
 7         # 读取每一行
 8         line = sys.stdin.readline().strip()
 9         # 转成列表
10         values = list(map(str, line.split()))
11 
12         toallList.append(values)
13         if line == '' :
14             break
15     toallList.pop()
16     #排序
17     toallList.sort(key=lambda i: i[1], reverse=False)
18     toallList.sort(key=lambda i: i[2], reverse=False)
19     toallList.sort(key=lambda i: i[0], reverse=False)
20 
21     for i in range(len(toallList)):
22         print(toallList[i][0],toallList[i][1],toallList[i][2])

 

posted @ 2021-02-22 21:06  菜小鱼~  阅读(305)  评论(0编辑  收藏  举报