小白解题思路,外加详细注释
dic = {} # 创建字典准备接收结果输入
while True:
try:
s = input().strip() # 接受输入集并消除字符串首尾特殊字符
pwd_file = s.rsplit(' ',1)[0].split('\\')[-1] # 第一个rsplit是将字符串从右数第一个空格处分割,即分割出完整路径+行数
# 第二个split是将分割后的路径,再次以“\”进行分割,[-1]代表取出分割后的最后文件名部分
pwd_line = s.rsplit(' ',1)[1] # 将字符串从右数第一个空格处分割,取出第二部分“行数”
pwd_file_find = pwd_file[-16:] if len(pwd_file) >= 16 else pwd_file # 判断:如果最后文件名长度大于等于16位,截取最后16位,否则直接使用文件名
msg = pwd_file_find + ' ' + pwd_line # 将截取出来的文件名和行数用空格拼接起来
if msg not in dic: # 判断:如果msg不在字典中
dic[msg] = 1 # 将msg作为字典的键,给其对应值赋值位1
else: # 判断:如果msg已经存在字典中
dic[msg] += 1 # 在对应的键值上累加1
except EOFError:
break
for k,v in list(dic.items())[-8:]: # 因为字典不能做切片,所以先将字典转换为列表,再对列表进行切片(取出最后8位进行k,v遍历)
print(k,v) # 打印最后的结果

京公网安备 11010502036488号