我對我的作業問題有疑問。問題如下: 編寫一個程序,它讀取一個名爲input.txt的文本文件,其中包含任意數量的格式爲「,」的行,然後使用字典記錄此信息,最後將屏幕上顯示的國家/地區列表在文件中包含的城市數量。文件解析問題
例如,如果input.txt中包含以下內容:
紐約,美國
法國昂熱
洛杉磯,美國
加索爾,法國
敦刻爾克,法國
沙特阿拉伯麥加
該程序會輸出以下內容(按某種順序):
沙特阿拉伯:1
美國:2
法國:3
這裏是我的代碼:
def addword(w,wcDict):
if w in wcDict:
wcDict[w] +=1
else:
wcDict[w]= 1
import string
def processLine(line, wcDict):
wordlist= line.strip().split(",")
for word in wordlist:
word= word.lower().strip()
word=word.strip(string.punctuation)
addword(wordlist[1], wcDict)
def prettyprint(wcDict):
valkeylist= [(val,key) for key,val in wcDict.items()]
valkeylist.sort(reverse = True)
for val,key in valkeylist:
print '%-12s %3d'%(key,val)
def main():
wcDict={}
fobj= open('prob1.txt','r')
for line in fobj:
processLine(line, wcDict)
prettyprint (wcDict)
main()
我的代碼計算每個國家的兩倍。你能幫我麼?
謝謝
這裏有一個提示:看你在'processLine'函數調用'addword'。 – 2011-04-14 02:58:36
是的,我知道這是我的問題所在,但我無法弄清楚它爲什麼會計算兩次。 – Ivan 2011-04-14 03:11:41
看看你在添加什麼。你經歷了所有的麻煩準備了一個名爲'word'的變量,但是你真正傳遞給函數的是什麼? – 2011-04-14 03:14:08