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

相关推荐
平平淡淡才是true10 分钟前
偏序关系、哈斯图、最长链长度、最长链条数
算法
小钊(求职中)15 分钟前
算法知识、常用方法总结
java·算法·排序算法·力扣
paeamecium19 分钟前
【PAT甲级真题】- Talent and Virtue (25)
数据结构·c++·算法·pat
Mr_Xuhhh25 分钟前
蓝桥杯复习清单真题(C++版本)
c++·算法·蓝桥杯
tankeven26 分钟前
HJ163 时津风的资源收集
c++·算法
ZC跨境爬虫30 分钟前
免费验证码识别:用ddddocr实现Playwright自动化登录
爬虫·python·自动化
Boop_wu36 分钟前
[Java 算法] 动态规划(4)
数据结构·算法·leetcode
旖-旎39 分钟前
分治(计算右侧小于当前元素的个数)(7)
c++·学习·算法·leetcode·排序算法·归并排序
数据知道41 分钟前
claw-code 源码详细分析:子系统目录地图——几十个顶层包如何用五条轴(会话 / 工具 / 扩展 / 入口 / 桥接)读懂?
服务器·python·ai·claude code
cxr82841 分钟前
GPU 加速声场求解器 - 深度扩展
人工智能·python