5-6统计工龄

给定公司 n 名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。

输入格式:

输入首先给出正整数 n(≤105),即员工总人数;随后给出 n 个整数,即每个员工的工龄,范围在 0, 50。

输出格式:

按工龄的递增顺序输出每个工龄的员工个数,格式为:"工龄:人数"。每项占一行。如果人数为 0 则不输出该项。

这是一开始的错误答案:

python 复制代码
n=int(input())
m=list(map(int,input().split()))
m.sort()
for i in m:
    total=0
    if i==i:
        total+=1
        m1=set(m)
print(f'{m1}:{total}')

输出是{0, 2, 5, 7, 10}:1。

主要问题

  1. total 放在循环内,每次都被重置为 0 → 最后 total 只等于 1

  2. if i == i 永远成立,没意义

  3. m1 = set(m) 每次循环都重复计算,浪费

  4. 最后输出时,total 是最后一次循环的值(1),不是总次数

  5. 输出格式是 {集合}:{1},不是想要的统计结果

所以重新运用字典进行:

python 复制代码
n=int(input())
m=list(map(int,input().split()))
m.sort()
total={}
for i in m:
    if i in total:
        total[i]+=1
    else:
        total[i]=1
for r,j in total.items():
    print(f'{r}:{j}')

items() 是字典(dict) 的方法,作用是返回字典中所有的键-值对 ,每个键值对是一个元组 (键, 值)。

字典是动态的,循环每执行一次,就往里加一个键(如果新数)或更新值(如果重复)。

  • 如果遇到新数,就新建键值对

  • 如果遇到重复,就更新值

total.items() 每次返回一个元组,比如 (1, 1),然后:

  • 元组的第一个元素(键)赋给变量 r

  • 元组的第二个元素(值)赋给变量 j

相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技4 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼4 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
只睡四小时4 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
m0_547486664 天前
《数据结构教程》全套 PPT课件2026
数据结构