题解 | #简单错误记录#

简单错误记录

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



if __name__ == "__main__" :
    
    l = []
    while (1):
        try:
            rcv = input()
            l.append(rcv)
        except:
            break
    
    n = [] #新的处理后8个字符串
    d = {}
    begin = 0
    for i in l:
        sp0 = i.rindex(' ')
        #print(sp0)
        sp1 = i.rindex('\\')
        #print(sp1)
        if(sp0 - sp1 > 16):
            key = i[-20:]
        else:
            key = i[sp1 + 1:]
        #print(key)
        if len(n) < 8:
            b = False
            for d in n:
                if d.get(key) != None:
                    d.update({key : d.get(key) + 1})
                    b = True
            if b != True:
                n.append({key : 1})
        else:
            b = False
            for d in n:
                if d.get(key) != None:
                    d.update({key : d.get(key) + 1})
                    b = True
            if(b != True):
                n.append({key : 1})
                begin += 1

    for index in range(begin, len(n)):
        for key,val in n[index].items():
            print(key + " " + str(val))
    

需要注意的点 
1.python 通过捕获异常来确认输入结束
2.直接使用有效地文件名+空格+行数作为map地key值,来表示重复出现
3.不能把map数组删除,因为后面出现的文件名 计数是否+1 是遍历所有出现过的文件名,故只需要对结束后数组开始遍历的索引+1即可, 即代码中的begin
全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务