如何将循环内生成的map错误统计值累加到外部map中
原代码错误点
- 存在性判断逻辑写反:需要校验的是错误类型名称(即
ErrorTypes的键k)是否在总统计字典中,原代码误把整数类型的计数值ErrorTypes[k]作为判断对象,逻辑完全不成立 - Python原生字典不支持直接通过
+=运算符合并键值对,必须针对单个键值做计数更新
实现方案
原生字典写法(无需引入额外库)
注意累加逻辑需要嵌套在你遍历所有txt文件的外层循环中,每处理完单个文件得到当前文件的错误统计字典ErrorTypes后,就执行一次累加操作:
totalErrors = {} # 以下是你遍历所有待处理txt文件的外层循环 for file_path in sorted(your_txt_file_list): # --- 这里是你原本的单文件统计逻辑,处理后得到当前文件的ErrorTypes字典 --- ErrorTypes = 单文件错误统计逻辑(file_path) # 累加当前文件的统计结果 for err_name, err_count in ErrorTypes.items(): if err_name in totalErrors: totalErrors[err_name] += err_count else: totalErrors[err_name] = err_count
更简便的Counter写法
如果用Python标准库自带的Counter计数类,不需要手动写键存在判断,直接支持同键计数累加,代码更简洁:
from collections import Counter totalErrors = Counter() # 遍历所有txt文件的外层循环 for file_path in sorted(your_txt_file_list): # 单文件统计得到ErrorTypes ErrorTypes = 单文件错误统计逻辑(file_path) # 直接累加即可,自动合并同类型错误的计数 totalErrors += ErrorTypes
以上两种写法都能实现跨文件的错误次数累加,比如第一个文件统计到"Check failed for display "出现8次,第二个文件统计到同类型错误出现3次,最终totalErrors中该键对应的计数值就是11。
内容的提问来源于stack exchange,提问作者Olovia.solfjell
相关产品推荐
相关产品推荐

