def most_popular_guests(file_in):
f=file(file_in,'r')
listoflines=f.readlines()
D={}
dict={}
title=''
for lines in listoflines:
if (lines.isupper()):
title=lines
else:
lines=lines.split(":")
names=(lines[1]).split(",")
for name in names:
if D.has_key(name):
D[name].append(Show_Appearance(title,lines[0]))
else:
D[name]=[Show_Appearance(title,lines[0])]
break
dict=longest(D)
def longest(D):
max=0
d={}
for name in D.keys():
value = D[name]
if max<len(value):
max=len(value)
for keys in D.keys:
value=D[keys]
if len(value)==max:
d[key]=value
return d
我试图找到一个字典,其中最常出现的人是关键,并且该人的节目列表为值。保持此列表索引超出范围错误。
答案 0 :(得分:3)
脚本的一般问题是它做出了错误的假设,并且在假设结果不正确时不准备处理这种情况:)
更具体地说,lines.split(":")
不能保证返回至少2个元素长的列表,而其余代码只是盲目地假设访问行[0]和行[1]是安全的。
如何处理这个问题取决于你的目标 - 你可能想忽略这样的输入,停止脚本或者记录警告。像这样的东西会跳过格式错误的行:
lines=lines.split(":")
if len(lines) < 2:
print "Woops, bad line: %s" % lines
continue