题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

import sys
# 错误记录类
class ErrorLog():
    def __init__(self):
        # 初始化一个日志id计数字典
        self.logs_id = {}
        # 一个日志信息的列表
        self.logs = []
        # 最大条数
        self.max_length = 8
        # 文件名截取长度
        self.str_limit = 16
        # 日志计数
        self.count = 0
    
    # 记录日志方法
    def record(self, log):
        filename , line = self.log_format(log)
        self.count += 1
        log_id = filename + line
        # 检查是否重复
        if not self.log_repeat_check(log_id):
            if len(self.logs) >= self.max_length:
                self.logs.pop(0)
            self.logs.append({
                'file':filename,
                'line':line
            })
            self.logs_id[log_id] = 1
        else:
            self.logs_id[log_id] += 1
    
    # 辅助方法,日志格式化
    def log_format(self, log):
        # 空格拆分 
        filepath,line = log.split()
        # 考查切片 [-16:]  第一个参数负值,表示从后往前,取最后16个
        filename = filepath.split('\\')[-1][-self.str_limit:]
        return filename,line

    # 辅助方法,检查重复
    def log_repeat_check(self, log_id):
        return log_id in list(self.logs_id)
    
    # 打印日志
    def get_current_logs(self):
        for item in self.logs:
            print(' '.join([item['file'], item['line'], str(self.logs_id[item['file']+item['line']])]))

logger = ErrorLog()
for item in sys.stdin:
   logger.record(item.strip())
logger.get_current_logs()

全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务