如何用Python计算数组重复项数量及统计密码错误信息出现次数
Python问题解决方案
1. 计算数组中的重复项数量
这里有两种实用方法,你可以根据需求选择:
方法1:使用collections.Counter(推荐)
这是Python标准库专为计数场景设计的工具,代码简洁且高效:
from collections import Counter # 示例数组 arr = [1, 2, 2, 3, 3, 3, 4] # 生成元素计数结果 element_counts = Counter(arr) # 遍历打印所有元素的重复次数 for element, count in element_counts.items(): print(f"元素 {element} 出现了 {count} 次") # 获取特定元素的出现次数 print(f"元素2的出现次数:{element_counts[2]}")
Counter会返回一个类字典的对象,键是数组中的元素,值对应元素的出现次数,非常方便后续查询和扩展处理。
方法2:手动遍历统计
如果想理解计数的底层逻辑,可以自己实现遍历统计:
arr = [1, 2, 2, 3, 3, 3, 4] count_dict = {} for item in arr: if item in count_dict: count_dict[item] += 1 else: count_dict[item] = 1 # 输出统计结果 for item, count in count_dict.items(): print(f"元素 {item} 出现了 {count} 次")
2. 统计日志文件中两种错误信息的出现次数
针对你的日志文件场景,这里提供两种实用解决方案:
方法1:用Counter灵活统计(适合后续扩展)
如果以后可能新增错误类型,这种方法更容易维护:
from collections import Counter # 初始化错误计数器 error_counter = Counter() # 读取日志文件(自动处理文件关闭) with open('error_log.txt', 'r') as log_file: for line in log_file: # 拆分每行内容,提取错误信息部分 _, error_msg = line.strip().split(', ') error_counter[error_msg] += 1 # 将统计结果赋值给指定变量 password_too_short = error_counter.get("Password < 6", 0) password_too_long = error_counter.get("Password > 14", 0) print(f"Password < 6 出现次数:{password_too_short}") print(f"Password > 14 出现次数:{password_too_long}")
方法2:直接用变量计数(更直观)
如果只需要统计这两种错误,直接用两个变量计数会更简单直观:
# 初始化计数变量 password_too_short = 0 password_too_long = 0 with open('error_log.txt', 'r') as log_file: for line in log_file: # 提取错误信息 error_msg = line.strip().split(', ')[1] # 判断并更新计数 if error_msg == "Password < 6": password_too_short += 1 elif error_msg == "Password > 14": password_too_long += 1 # 输出最终结果 print(f"Password < 6 出现次数:{password_too_short}") print(f"Password > 14 出现次数:{password_too_long}")
注意:使用with open语句能确保文件自动关闭,避免资源泄漏;strip()用来去除每行末尾的换行符和多余空格,split(', ')则精准拆分时间与错误信息。
内容的提问来源于stack exchange,提问作者Bradley Lewis
相关产品推荐
相关产品推荐

