1451 :统计各专业参加活动人数 【Python】(字典)

题目描述

学校共设有多个学院,具体学院代码和名称存放在字典中。现学校举办一次全校性大型公益活动,需要统计各学院参与本科学生数,并列出参与人数排前3的学院与参与人数。学院代码与学院名称存放于字典中:输入参与学生的学号(12位,其中第5-8位为学院代码),统计各学院的参与人数,并输出人数最多的前3个学院名称及人数。
若学号对应的学院不在字典中,则均统计为“其他”,如果参与学院不足3个,则按实际学院数输出。请将以下字典直接复制到程序中。题目保证输入的学号均为12位数字。
dict1={‘0550’:‘机械工程学院’, ‘0556’:‘计算机学院’,
‘0557’:‘自动化与电子信息学院’, ‘0560’:‘化学学院’,
‘0565’:‘化工学院’, ‘0572’:‘材料科学与工程学院’,
‘0582’:‘环境与资源学院’, ‘0580’:‘土木工程与力学学院’,
‘0571’:‘物理与光电工程学院’, ‘0575’:‘数学与计算科学学院’,
‘0501’:‘马克思主义学院’, ‘0502’:‘哲学与历史文化学院’,
‘0519’:‘公共管理学院’, ‘0525’:‘法学部’, ‘0513’:‘商学院’,
‘0543’:‘艺术学院’, ‘0531’:‘外国语学院’, ‘0537’:‘文学与新闻学院’,
‘0585’:‘国际交流学院’, ‘0596’:‘兴湘学院’}
例如,输入:
202105430122 202105430113 202105430130 202105430118 202105000101 202105000102
则应输出:
艺术学院 4  其他 2

提示

统计人数时利用字典存储统计结果,排序时将字典转换成列表进行排序。测试样例时,请直接复制样例字符串,输出时无需格式化,直接输出相关列表元素。多个学院人数相同时,按输入学号的先后顺序输出。

输入输出格式

输入格式

输入n(n≤1000)个表示学号的整数,中间用空格分隔。

输出格式

输出学院名称和对应的人数,按人数从大到小顺序排列。

输入输出样例

输入

201805820210 201805820218 201805820213 201805820214 201805820219 201805820215 201905020218 201905020219 201905720210 201905720212 201905720213 201905720214 202105311020 202105311018 202105311016 202105311009 202105311022 202105311027 202105311024 202105311008 202105311025 202105311017 202105311010 202105311028 202105311021 202105311023 202105311026 202105311006 202105430206 202105430210 202105370224 202105370204 202105370115 202105370131 202105370101 202105370114 202105370122 202105370113 202105370130 202105370118

输出

外国语学院 16
文学与新闻学院 10
环境与资源学院 6

dict1 = {'0550': '机械工程学院', '0556': '计算机学院',
         '0557': '自动化与电子信息学院', '0560': '化学学院',
         '0565': '化工学院', '0572': '材料科学与工程学院',
         '0582': '环境与资源学院', '0580': '土木工程与力学学院',
         '0571': '物理与光电工程学院', '0575': '数学与计算科学学院',
         '0501': '马克思主义学院', '0502': '哲学与历史文化学院',
         '0519': '公共管理学院', '0525': '法学部', '0513': '商学院',
         '0543': '艺术学院', '0531': '外国语学院', '0537': '文学与新闻学院',
         '0585': '国际交流学院', '0596': '兴湘学院'}

student_ids = input().split()
count = {}

for student_id in student_ids:
    college_code = student_id[4:8]
    college_name = dict1.get(college_code, "其他")
    count[college_name] = count.get(college_name, 0) + 1

sorted_count = sorted(count.items(), key=lambda x: x[1], reverse=True)

for i in range(min(3, len(sorted_count))):
    print(sorted_count[i][0], sorted_count[i][1])

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值