Python中字典的使用

Python中字典的使用,python,python-2.7,python-3.x,dictionary,Python,Python 2.7,Python 3.x,Dictionary,我正在做一个Coursera python练习,在编写代码时遇到了困难 问题如下: 编写一个程序,通读mbox-short.txt,找出谁发送的邮件数量最多。程序查找“发件人”行,并将这些行中的第二个字作为发送邮件的人 该程序创建一个Python字典,将发件人的邮件地址映射到文件中出现的次数计数。字典生成后,程序使用最大循环读取字典,以查找最多的提交者。 示例文本文件位于以下行中: 预期产出应为: cwen@iupui.edu五, 这是我的代码: name = raw_input("Enter

我正在做一个Coursera python练习,在编写代码时遇到了困难

问题如下:

编写一个程序,通读mbox-short.txt,找出谁发送的邮件数量最多。程序查找“发件人”行,并将这些行中的第二个字作为发送邮件的人

该程序创建一个Python字典,将发件人的邮件地址映射到文件中出现的次数计数。字典生成后,程序使用最大循环读取字典,以查找最多的提交者。 示例文本文件位于以下行中:

预期产出应为:

cwen@iupui.edu五,

这是我的代码:

 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
name=raw\u输入(“输入文件:”)
如果len(name)<1:name=“mbox short.txt”
name=“mbox short.txt”
句柄=打开(名称)
text=handle.read()
对于线输入句柄:
line=line.rstrip()
words=line.split()
如果单词==[]:继续
如果单词[0]!='从:继续
单词2=单词[1]
words3=words2.split()
计数=dict()
对于words3中的单词:
计数[字]=计数。获取(字,0)+1
bigcount=None
bigword=None
对于键,值在counts.items()中:
如果val>bigcount:
大字=关键字
bigcount=val
打印bigword,bigcount
我的输出是: cwen@iupui.edu一,


我的代码中的错误在哪里

这是您需要的代码,您没有在列表中存储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
name=raw\u输入(“输入文件:”)
如果len(name)<1:name=“mbox short.txt”
name=“mbox short.txt”
句柄=打开(名称)
words3=[]
对于线输入句柄:
line=line.rstrip()
words=line.split()
如果单词==[]:继续
如果单词[0]!='从:继续
单词2=单词[1]
words3.append(words2.split()[0])
#印刷文字
计数=dict()
对于words3中的单词:
计数[字]=计数。获取(字,0)+1
bigcount=None
bigword=None
对于键,值在counts.items()中:
如果val>bigcount:
大字=关键字
bigcount=val
打印bigword,bigcount

Dunno。出现了什么问题?请尝试对文本中的行使用
,而不是对句柄中的行使用
我的输出应该是cwen@iupui.edu5.但它的到来cwen@iupui.edu 1@dhdavvie我试过了,但它不起作用。我看不出它如何在
words2
上产生
nameserror
,因为
handle
应该是空的,因为已经完成了
handle.read()
,然后只在
中为handle
循环中的行定义
words2
,因为该循环中的任何内容都不会执行,因为文件对象的指针位于末尾。无需读取文件、拆分文件并遍历结果列表。你可以跳过它,然后迭代文件对象本身。@TigerhawkT3谢谢你,伙计,我不知道。你能解释一下“words3.append(words2.split()[0])”的用法吗。事实上,我是python新手……拆分它并获得拆分后得到的数组的第一个元素。在您认为没有得到什么的地方使用print语句,它会为您打印出来,使您易于理解。