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

相关推荐
从零开始学习人工智能17 分钟前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
大明者省26 分钟前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
卷无止境1 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha13142 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教2 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
白狐_7982 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
Python私教2 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
zander2582 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
卷无止境3 小时前
FastAPI 的Admin面板生态
后端·python
Shell运维手记3 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github