我有一个关于作业问题的疑问。以下是问题:
编写一个程序,读取名为input.txt的文本文件,其中包含任意数量的形式为“城市, 国家”的行,然后使用字典记录这些信息,并最终输出屏幕上所表示国家的城市数列表。
例如,如果input.txt包含以下内容:
New York, US Angers, France Los Angeles, US Pau, France Dunkerque, France Mecca, Saudi Arabia
该程序将输出以下结果(以某种顺序):
Saudi Arabia : 1 US : 2 France : 3
以下是我的代码:
编写一个程序,读取名为input.txt的文本文件,其中包含任意数量的形式为“城市, 国家”的行,然后使用字典记录这些信息,并最终输出屏幕上所表示国家的城市数列表。
例如,如果input.txt包含以下内容:
New York, US Angers, France Los Angeles, US Pau, France Dunkerque, France Mecca, Saudi Arabia
该程序将输出以下结果(以某种顺序):
Saudi Arabia : 1 US : 2 France : 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
的调用。 - Jason LeBrunword
的变量,但你实际上传递给函数的是什么? - Jason LeBrun