按级别数一数
运行下面这段程序,填写它打印出来的结果。
LOG = """08:12:03 INFO auth login ok
08:12:41 ERROR db timeout
08:13:02 INFO web page 200
08:13:15 WARN auth slow login
08:14:00 INFO db query ok
08:14:22 ERROR db timeout
08:15:03 INFO auth login ok
08:15:44 INFO web page 200
08:16:10 WARN db retry
08:16:55 ERROR web page 500
08:17:20 INFO db query ok
08:18:01 INFO auth logout""".strip().splitlines()
def keep(lines, word):
return [l for l in lines if word in l]
def field(lines, i):
return [l.split(" ")[i] for l in lines]
def tally(items):
d = {}
for v in items:
d[v] = d.get(v, 0) + 1
return sorted(d.items(), key=lambda kv: (-kv[1], kv[0]))
rows = tally(field(LOG, 1))
print("/".join(k + "-" + str(v) for k, v in rows))
全部评论