You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中统计员工字典数据库内各部门人数的问题

解决Python统计部门人数的问题

别担心,刚入门Python遇到这类问题太正常了!我帮你拆解代码里的问题,再给你正确的实现思路和代码~

你的代码里的核心问题

先看看你代码里几个关键的错误点:

  • 员工数据定义错误:你现在把几个字典直接写在一起,Python无法识别这是一个员工集合,应该把所有员工字典放进列表(用[]包裹),这样才能遍历所有员工信息。
  • 遍历逻辑错误:就算数据定义正确,你写的for item in employees之后又用dic = employees[item]是错误的——如果employees是列表,item本身就是每个员工的字典,不需要再通过索引取值。
  • 统计逻辑完全偏离:你写的dic['dpt'[0]]==dic['dpt'[1]]完全不是统计部门人数的逻辑:'dpt'[0]是字符'd','dpt'[1]是字符'p',这行代码是在比较员工字典中键为'd'和'p'的值,和部门统计毫无关系。
  • 未初始化变量:你用到的duplicate变量没有提前定义,就算逻辑正确也会直接报错。

正确的实现代码

下面是能实现「统计各部门人数」需求的代码,我加了详细注释:

def main():
    # 正确定义员工列表:把每个员工字典放进[]里,组成可遍历的集合
    employees = [
        {'name': 'John', 'empID': '102', 'dpt': 'tech', 'title': 'programmer', 'salary': '75'},
        {'name': 'Jane', 'empID': '202', 'dpt': 'tech', 'title': 'programmer', 'salary': '80'},
        {'name': 'Joe', 'empID': '303', 'dpt': 'accounting', 'title': 'accountant', 'salary': '85'}
    ]
    
    # 创建一个空字典,用来存储各部门的人数,键是部门名称,值是人数
    department_counts = {}
    
    # 遍历每个员工字典
    for emp in employees:
        # 获取当前员工的部门
        dept = emp['dpt']
        # 如果部门已经在统计字典里,人数+1;否则初始化为1
        if dept in department_counts:
            department_counts[dept] += 1
        else:
            department_counts[dept] = 1
    
    # 遍历统计结果,输出每个部门的人数
    for dept, count in department_counts.items():
        print(f"{dept}-{count}")

# 调用main函数执行
main()

代码运行结果

运行这段代码后,你会得到想要的输出:

tech-2
accounting-1

另外,如果你想更简洁地实现统计,还可以用Python标准库的collections.Counter,一行就能完成统计:

from collections import Counter

def main():
    employees = [
        {'name': 'John', 'empID': '102', 'dpt': 'tech', 'title': 'programmer', 'salary': '75'},
        {'name': 'Jane', 'empID': '202', 'dpt': 'tech', 'title': 'programmer', 'salary': '80'},
        {'name': 'Joe', 'empID': '303', 'dpt': 'accounting', 'title': 'accountant', 'salary': '85'}
    ]
    # 用Counter直接统计所有部门的出现次数
    dept_counts = Counter(emp['dpt'] for emp in employees)
    for dept, count in dept_counts.items():
        print(f"{dept}-{count}")

main()

这个方法更Pythonic,适合之后熟悉了基础语法后使用~

内容的提问来源于stack exchange,提问作者Codr4Life

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:56:12