如何将Python CSV统计代码的两个字典替换为单个result字典
单字典统计CSV入职人数代码修改方案
你只需要把原来两个性别对应的顶层字典,合并为以性别为顶层key的单个result字典即可,核心统计逻辑不需要改动,修改后的完整代码如下:
import csv # 初始化单字典,顶层key为性别,下层存储对应性别的年份-季度统计数据 result = {'M': {}, 'F': {}} with open('1000 Records.csv') as csv_file: csv_reader = csv.reader(csv_file) # 跳过表头行,如果你的CSV没有表头可以删掉下一行 next(csv_reader) for row in csv_reader: year_of_joining = int(row[17]) quarter_of_joining = row[15] gender = row[5] # 取对应性别的统计子字典 current_stats = result[gender] if year_of_joining not in current_stats: current_stats[year_of_joining] = {f'Q{i + 1}': 0 for i in range(4)} current_stats[year_of_joining][quarter_of_joining] += 1 # 汇总所有出现过的年份去重排序 years = list(result['M'].keys()) + list(result['F'].keys()) years = sorted(list(set(years))) for year in years: # 取对应年份的男女统计数据,没有的话默认全0 male_data = result['M'].get(year, {'Q1':0, 'Q2':0, 'Q3':0, 'Q4':0}) female_data = result['F'].get(year, {'Q1':0, 'Q2':0, 'Q3':0, 'Q4':0}) # 统计上半年(H1=Q1+Q2)、下半年(H2=Q3+Q4)人数 male_h1, male_h2 = male_data['Q1']+male_data['Q2'], male_data['Q3']+male_data['Q4'] female_h1, female_h2 = female_data['Q1']+female_data['Q2'], female_data['Q3']+female_data['Q4'] # 按需求输出,这里对齐你原来的打印逻辑调整了输出内容 print(f"{year} 入职统计:H1 男{male_h1} 女{female_h1},H2 男{male_h2} 女{female_h2}")
主要修改点
- 去掉原来的
males、females两个独立字典,替换为顶层key为'M'/'F'的单个result字典,下层数据结构和原逻辑完全兼容 - 补充了跳过CSV表头的逻辑(如果你的文件没有表头可以删除
next(csv_reader)这行) - 修正了原代码里直接取年份对应字典作为人数的问题,改为按季度求和得到上下半年的统计结果
内容的提问来源于stack exchange,提问作者imhamza3333
相关产品推荐
相关产品推荐

