题解 | 简单错误记录
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import sys error_dict = {} #字典用于保存输入错误;key=文件名和行数,value=出现次数 error_order = [] #统计出现顺序 for line in sys.stdin: #逐行处理输入 if not line.strip(): #输入不符合要求,直接开始处理下一行 continue parts = line.strip().rsplit(' ', 1) #将输入内容分割成路径和行号 path = parts[0] line_num = parts[1] filename = path.split('\\')[-1] #将路径分割,提取最后一哥部分文件名保存 if len(filename) > 16: #文件名大于16的只保存后16位 filename = filename[-16:] key = (filename, line_num) if key not in error_dict: #如果文件名未被保存在字典的key中 error_dict[key] = 1 #字典这个文件名的值设置为1 error_order.append(key) #字典添加这个key else: error_dict[key] += 1 #如果文件名已被保存在字典的key中,直接这个key的value加一 for key in error_order[-8:]: #输出最后八个保存的 print(f"{key[0]} {key[1]} {error_dict[key]}") #使用正则输出
思路在代码注释里面!!!
注意:
1.第九行line.strip()是删除前后多余的空格和换行符;.rsplit(' ', 1)是以空格分割,rsplit是从右往前分割,1表示最多分割一次
2.第十三行中是\\是因为python中\是转译符号,而\\才表示一个真正的\符号,意思是你输入的是\进去,但是在它保存的时候它其实保存的是一个\\(程序内部)