You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将电影名作为字典键、对应演员列表作为值构建字典?

电影-演员字典构建解决方案

问题背景

我有一个按「电影名、演员、电影名、演员……」顺序排列的文件,内容如下:

12 Years a Slave
Topsy Chapman
12 Years a Slave
Devin Maurice Evans
12 Years a Slave
Brad Pitt
12 Years a Slave
Jay Huguley
12 Years a Slave
Devyn A. Tyler
12 Years a Slave
Willo Jean-Baptiste
American Hustle
Christian Bale
American Hustle
Bradley Cooper
American Hustle
Amy Adams
American Hustle
Jeremy Renner
American Hustle
Jennifer Lawrence

需要构建一个字典,每个电影名对应其所有演员的列表,格式示例:

{'Movie Title': ['Actor1', 'Actor2'], 'Another Movie': ['ActorA', 'ActorB']}

原代码如下:

d = {}

with open(file), 'r') as f:
    for key in f:
        d[key.strip()] = next(f).split()

print(d)

原代码问题分析

  1. 语法错误:open(file), 'r') 多了一个右括号,正确写法应为 open(file, 'r')
  2. 逻辑错误:每次循环直接覆盖字典中对应电影的演员列表,导致每个电影最终只保留最后一个演员,无法收集所有参演人员

修改后的代码

d = {}

# 替换为你的实际文件路径
with open("your_file.txt", 'r') as f:
    # 读取所有行,过滤空白行并去除每行首尾空格
    lines = [line.strip() for line in f if line.strip()]
    
    # 按步长2遍历,成对处理电影名和演员
    for i in range(0, len(lines), 2):
        movie = lines[i]
        actor = lines[i+1]
        # 收集演员:存在则追加,不存在则创建新列表
        if movie in d:
            d[movie].append(actor)
        else:
            d[movie] = [actor]

print(d)

代码说明

  • 先读取文件所有内容,过滤空白行并清理每行的首尾空格,避免因换行符或多余空格导致电影名匹配失败
  • 以步长2遍历处理后的行列表,每次取出一对「电影名-演员」进行处理
  • 检查电影名是否已在字典中:若存在则将演员追加到对应列表,不存在则新建键值对,值为包含该演员的初始列表
  • 最终生成的字典会完整保留每个电影对应的所有参演演员

运行结果

执行后将输出符合需求的字典:

{
    '12 Years a Slave': [
        'Topsy Chapman',
        'Devin Maurice Evans',
        'Brad Pitt',
        'Jay Huguley',
        'Devyn A. Tyler',
        'Willo Jean-Baptiste'
    ],
    'American Hustle': [
        'Christian Bale',
        'Bradley Cooper',
        'Amy Adams',
        'Jeremy Renner',
        'Jennifer Lawrence'
    ]
}

内容的提问来源于stack exchange,提问作者Justin Watts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:55:27