这里是代码,它应该从文件中读取然后生成一个字典......
def get_songs(setlists):
f = file(setlists)
d = {}
next_line = f.readline()
while (next_line != ""):
if next_line[0].isdigit():
concert1 = concert(int(next_line.split("-")[0]) , int(next_line.split("-")[1]) , \
int(next_line.split("-")[2]) , next_line.split("-")[3].strip("\n"))
for i in f.readline().split('/'):
d[i.strip(" ").strip("\n").split("(")[0]] = (concert1 if not d.has_key(i.strip(" ").strip("\n").split("(")[0])
else ([d[i.strip(" ").strip("\n").split("(")[0]] , concert1] if
isinstance(d[i.strip(" ").strip("\n").split("(")[0]] , concert)
else d[i.strip(" ").strip("\n").split("(")[0]] + [concert1]))
next_line = f.readline()
return d
答案 0 :(得分:0)
目前尚不清楚错误的位置。我在代码中注意到的一件事是在for i in ...
代码之后,d [..]采用单个值或数组:
d[..] = (concert1
if cond1 else
([d[..], concert1] if cond2
else d[..]+concert1)
我会避免将这些表达式内联并执行if / else之类的操作:
tmp = None
if cond1:
tmp = concert1
elif cond2:
tmp = [d[d[i.strip(" ").strip("\n").split("(")[0]] , concert1]
else:
tmp = d[i.strip(" ").strip("\n").split("(")[0]] + [concert1]
d[i.strip(" ").strip("\n").split("(")[0]] = tmp
我可以看到最后else
有些不正确(?)str + array将是一个str imho?
作为旁注,您可能想要使用正则表达式而不是所有那些条带/装饰......