close

 

沒幾行程式寫了快一小時

 

#開檔
import urllib
handle = urllib.urlopen('https://raw.githubusercontent.com/chio-nzgft/python-data/master/mbox-short.txt')
#設定 dict 也就是x 為字典
x=dict()
#一行一行讀檔
for line in handle:
#剔除 "From: "開頭的那行
#抓出 "From"開頭的那行
    if line.startswith("From") and not line.startswith("From:"):
#切割那行成多個字串
#將切割出的第"1" 個字串放到 y  (pythen 第一個字串是 "0")
        y=line.split()[1]
#如x是新建的就放index 為 0 再加 1
#如x是不是新建的就將 index 的值再加 1
        x[y]=x.get(y,0)+1
#宣告None ...將用於判斷是否第一個
bigC=None
#將 x dict 一個一個讀出成 字串及index
for w,c in x.items():
#判斷 是否是第一個(None)  是就將數值放入
#找出最大的index
    if bigC is None or c>bigC:
        bigC=c
        bigW=w
#印出最大的index 及其字串
print bigW,bigC

 

 

第一版

handle = open("mbox-short.txt")
lst1=list()
lst2=list()
for line in handle:
    if line.startswith("From:"):
        continue
    if line.startswith("From"):
        x=line.split()
        y=x[-2:-1]
        z=y[0]
        lst1.append((z[0:2],1))
lst1.sort()
count=0
for k,v in lst1:
    if count>0:
        (kr,vr)=lst2[count-1]
    if count==0 or k != kr:
        count=count+1
        lst2.append((k,v))
        continue
    else:
        lst2[-1]=(k,vr+1)
for k,v in lst2:
    print k,v

第二版 發現 python 越寫越短 !@#$%

handle = open("mbox-short.txt")
counts=dict()
lst=list()
for line in handle:
    if line.startswith("From:"):
        continue
    if line.startswith("From"):
        z=line.split()[-2:-1][0]
        counts[z[0:2]]=counts.get(z[0:2],0)+1
for k,v in counts.items():
    lst.append((k,v))
lst.sort()
for  k,v in lst:
    print k,v  

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 echochio 的頭像
    echochio

    echochio

    echochio 發表在 痞客邦 留言(0) 人氣()