Python中遍历嵌套字典实现按错误码分组PC并统计数量的方法
解决方案:按错误码分组PC并统计数量
嘿,我来帮你搞定这个需求!这里有两种实现方式,都能完美完成提取相同错误码的PC列表、统计数量的任务:
基础实现(无需额外库)
这种写法不需要导入任何第三方库,完全用Python原生语法实现,适合新手理解逻辑:
# 你的原始嵌套字典数据 pc_errors = {'PC1': {'error': 'NOT_ENOUGH_RAM'}, 'PC2': {'error': 'POWER_FAILURE'}, 'PC3': {'error': 'POWER_FAILURE'}} # 创建空字典,用来存储「错误码: 对应PC列表」的映射 error_groups = {} # 遍历每个PC的错误信息 for pc_name, error_details in pc_errors.items(): error_code = error_details['error'] # 如果当前错误码还没在分组字典里,先初始化一个空列表 if error_code not in error_groups: error_groups[error_code] = [] # 将PC名称添加到对应错误码的列表中 error_groups[error_code].append(pc_name) # 按照要求的格式输出结果 for error_code, pc_list in error_groups.items(): pc_count = len(pc_list) print(f"'{error_code}', {pc_list}, {pc_count}")
代码逻辑说明
- 先定义你的原始数据
pc_errors; - 初始化
error_groups字典,用来做错误码和PC列表的映射; - 遍历原始数据的每一项,提取错误码,把PC名称归类到对应错误码的列表中;
- 最后遍历分组后的字典,计算每个列表的长度(也就是PC数量),并按指定格式打印。
简洁实现(用collections.defaultdict)
如果你想让代码更简洁,可以用Python标准库中的defaultdict,它会自动为不存在的键创建默认值(这里是空列表),省去手动判断的步骤:
from collections import defaultdict # 原始数据 pc_errors = {'PC1': {'error': 'NOT_ENOUGH_RAM'}, 'PC2': {'error': 'POWER_FAILURE'}, 'PC3': {'error': 'POWER_FAILURE'}} # 用defaultdict自动初始化空列表 error_groups = defaultdict(list) for pc_name, error_details in pc_errors.items(): # 直接添加,无需判断键是否存在 error_groups[error_details['error']].append(pc_name) # 输出结果 for error_code, pc_list in error_groups.items(): print(f"'{error_code}', {pc_list}, {len(pc_list)}")
运行结果
两种代码的输出都是你想要的格式:
'POWER_FAILURE', ['PC2', 'PC3'], 2 'NOT_ENOUGH_RAM', ['PC1'], 1
内容的提问来源于stack exchange,提问作者asingh1988
相关产品推荐
相关产品推荐

