2015-04-12 103 views
-4

****输入**** ['From','[email protected]','Fri','Jan','14','22:16:24','2012']如何优化Python代码?

**** ****计划

words =[] 
HMS =[] 
hour_freq_list = {} 

for line in fHand: # 1st loop 
    line = line.strip() 
    if not line.startswith ('From '):continue 
    words = line.split() 
    HMS = words[5].split() 
    Hr, Mi, Se = HMS[0].split(":") 

    if Hr in hour_freq_list: 
      hour_freq_list[Hr] += 1 
    else: 
      hour_freq_list[Hr] = 1 
print (hour_freq_list) 

电流输出

{'19': 1, '04': 3, '14': 1, '11': 6, '18': 1, '09': 2, '17': 2, '15': 2, '10': 3 
, '06': 1, '16': 4, '07': 1} 

所需的输出

04 3 
06 1 
07 1 
09 2 
10 3 
11 6 
14 1 
15 2 
16 4 
17 2 
18 1 
19 1 

如何优化我的代码以逐行获取排序顺序中的所需输出?我需要更改哪些数据结构才能使代码更好,更紧凑?

回答

0
data = [['From', '[email protected]', 'Fri', 'Jan', '14', '22:16:24', '2012'], 
    ['From', '[email protected]', 'Fri', 'Jan', '14', '23:16:24', '2012'], 
    ['From', '[email protected]', 'Fri', 'Jan', '14', '21:16:24', '2012'], 
    ['From', '[email protected]', 'Fri', 'Jan', '14', '22:02:24', '2012'] 
    ] 

hour_frequency_list = {} 

for temp in data: 
    hour = temp[5].split(":")[0] 
    if hour in hour_frequency_list: 
    hour_frequency_list[hour] += 1 
    else: 
    hour_frequency_list[hour] = 1 

sorted_list = sorted(hour_frequency_list.items()) 

print ("hour | Occurences") 
for k in sorted_list: 
    print (k[0] + " |" + str(k[1])) 

输出

hour | Occurences 
21 |1 
22 |2 
23 |1 
+1

我已经扩展代码这样的 - > d = hour_freq_list 为K,V以排序(d.items()): 打印(K,V),但不知何故,我的系统不喜欢sorted()函数,所以我向你提出了另一个请求。现在,它的工作,一百万感谢。你是最棒的。我对Python很陌生,所以我可能会要求提供一个好网站列表,可能有帮助的书籍。你将如何从“初学者到掌握”布局Python旅程。你的洞察力将非常感谢。祝你今天愉快。 – Samuel

+0

非常感谢,但我也是初学者。以下文章列出了一些好看的书。尽管我更喜欢'头第一蟒蛇',因为它有点像讲故事。无论如何,祝你好运与Python。 (https://freepythontips.wordpress.com/2014/02/04/free-python-books/?relatedposts_hit=1&relatedposts_origin=184&relatedposts_position=2)和(https://freepythontips.wordpress.com/2013/07/31/ 10-python-blogs-worth-following /) – 2015-04-14 07:43:13

+0

再次感谢您分享这些信息。我非常感谢它。作为一个初学者,你知道很多,我感到非常惊讶。祝你今天愉快。 – Samuel