在Python中使用Dictionary

时间:2016-08-08 10:10:13

标签: python python-2.7 python-3.x dictionary

我正在进行Coursera python练习并且无法编写代码。

问题如下:

编写一个程序来读取mbox-short.txt并找出谁发送了最多的邮件消息。该计划寻找' From'行,并将这些行的第二个单词作为发送邮件的人。

该程序创建一个Python字典,将发件人的邮件地址映射到它们在文件中出现的次数。在生成字典之后,程序使用最大循环读取字典以找到最多产的提交者。 示例文本文件位于以下行:http://www.pythonlearn.com/code/mbox-short.txt

预期的输出应为:

cwen@iupui.edu 5

这是我的代码:

 name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
name="mbox-short.txt"
handle=open(name)
text=handle.read()
for line in handle:
    line=line.rstrip()
    words=line.split()
    if words==[]: continue
    if words[0]!='From':continue
    words2=words[1]
words3=words2.split()
counts=dict()
for word in words3:
     counts[word]=counts.get(word,0)+1



bigcount=None
bigword=None
for key,val in counts.items():
 if val>bigcount:
    bigword=key
    bigcount=val
print bigword,bigcount

我的输出是: cwen@iupui.edu 1

我的代码中的错误在哪里?

1 个答案:

答案 0 :(得分:0)

这是你需要的代码,你没有在列表中存储words2输出,并且正如评论中提到的那样,你也以错误的方式复制文件。

希望这会对你有所帮助。

name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
name="mbox-short.txt"
handle=open(name)
words3 = []
for line in handle:
    line=line.rstrip()
    words=line.split()
    if words==[]: continue
    if words[0]!='From':continue
    words2=words[1]
    words3.append(words2.split()[0])
    # print words
counts=dict()
for word in words3:
     counts[word]=counts.get(word,0)+1


bigcount=None
bigword=None
for key,val in counts.items():
 if val>bigcount:
    bigword=key
    bigcount=val
print bigword,bigcount