我是Python新手,正在学习在线课程。我必须解决的问题之一是:
10.2编写一个程序来读取mbox-short.txt,并计算出每天每小时每条消息的分布情况。通过查找时间,然后使用冒号再次拆分字符串,可以从“from”行中提取小时
From xyz.abc@ab.cd.de Sat Jan 5 09:14:16 2008
累积每小时的计数后,打印计数,按小时排序,如下所示
我的代码是:
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
lst= []
lst2=[]
lst3=[]
ddd= {}
for l in handle:
if l.startswith("From"):
y= l.split()
leg= len(y)
if leg > 2:
x= y[5]
lst.append(x)
for h in lst:
y= h.split(":")
x= y[0]
lst2.append(x)
for v in lst2:
ddd[v]= ddd.get(v,0) + 1
for k, v in ddd.items():
tup = (k, v)
lst3.append (tup)
lst3= sorted(lst3)
for k, v in lst3:
print (k, v)
给出此输出:
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
这实际上是正确的答案。然而,我确信这段代码对大多数人来说都很可怕。你对我或我未来的编码有什么建议吗?我希望能够优化我的代码,而不是只写我想到的任何东西。对不起,如果我的英语不好
签出PythonPEP 8以获取样式建议
一些建议(其他人可能不同意)
更改:
致:
因此,请删除顶部的这些初始化,因为它们不提供上下文
发布的代码(非描述变量太多):
改为:
发布的代码(非描述变量太多):
改为:
或者更好(使用列表理解):
重构代码
相关问题 更多 >
编程相关推荐