将演员及其电影映射到字典中
def parse_actor_data(actor_data):
while 1:
line = actor_data.readline().strip()
if line.count('-') > 5:
break
actor_movie = {}
values = []
actor_name = ''
running_list = []
movie = []
for line in actor_data:
position = line.find(')')
running = line[:position + 1]
value = running.split('\t')
for k in value:
if k != '':
running_list.append(k)
actor_name_list = value[0].split(',')
actor_name = actor_name_list[0] + actor_name_list[-1]
for i in range(len(running_list)):
if value[0] == running_list[i]:
position2 = i
movie = running_list[position2+1:]
actor_movie[actor_name] = movie
check = actor_movie.keys()
for c in range(len(check)):
if len(check[c]) < 1:
actor_movie.pop(check[c])
return actor_movie
我现在遇到的问题是,只有电影的第一个项目被添加到演员电影里。有没有人能帮帮我?我已经试了很久,真的不知道为什么这样不行……
1 个回答
1
每次你运行:
actor_movie[actor_name] = movie
你其实是在覆盖之前和那个演员关联的最后一部电影。试试下面这种方法,存储一系列电影,而不仅仅是一个单一的值:
try:
actor_movie[actor_name].append(movie)
except KeyError:
actor_movie[actor_name] = [movie]
还有其他方法(比如 defaultdict
、dict.setdefault
等)可以做到同样的事情,但这个方法应该能让你开始使用。