将演员及其电影映射到字典中

0 投票
1 回答
679 浏览
提问于 2025-04-17 07:21
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]

还有其他方法(比如 defaultdictdict.setdefault 等)可以做到同样的事情,但这个方法应该能让你开始使用。

撰写回答