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

相关推荐
酱紫学Java1 小时前
数据安全比赛:Python 内置函数实战指南
后端·python·网络安全
EQUINOX11 小时前
倍增优化dp,P10976 统计重复个数
算法·数学建模·动态规划
廿一夏1 小时前
数据存储容器
python
样例过了就是过了1 小时前
LeetCode热题100 电话号码的字母组合
数据结构·c++·算法·leetcode·dfs
nervermore9902 小时前
1.10 面试经典150题-多数元素
算法
c++逐梦人2 小时前
二分查找模版及二分答案例题
算法·蓝桥杯
SNWCC2 小时前
autodl_M000_pytorch
人工智能·pytorch·python
biubiuibiu2 小时前
选择适合的硬盘:固态与机械硬盘的对比与推荐
c++·算法
big_rabbit05022 小时前
[算法][力扣226]翻转一颗二叉树
数据结构·算法·leetcode