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

如何利用was_in_movie列表将演员ID关联字典转换为姓名关联字典?

基于演员参演关系列表生成姓名关联字典

现有数据

# 演员ID与姓名的映射字典
actors = {'1': 'John', '2': 'Richard', '3': 'Lisa', '4': 'Jennifer'}
# 共同参演同一部电影的演员ID对列表
was_in_movie = [(1,2), (1,3), (3,4)]

需求

生成以演员姓名为键,对应共同参演的其他演员姓名集合为值的字典,预期输出:

{'John': {'Lisa', 'Richard'}, 'Richard': {'John'}, 'Lisa': {'John', 'Jennifer'}, 'Jennifer': {'Lisa'}}

解决方案(借助was_in_movie列表直接构建)

利用collections.defaultdict自动初始化空集合,遍历参演ID对完成双向关联的姓名转换:

from collections import defaultdict

# 初始化存储姓名关联的字典
name_relations = defaultdict(set)

for id1, id2 in was_in_movie:
    # 将整数ID转为字符串,匹配actors字典的键
    name1 = actors[str(id1)]
    name2 = actors[str(id2)]
    # 双向添加参演关联(A和B共同参演,互相加入对方的关联列表)
    name_relations[name1].add(name2)
    name_relations[name2].add(name1)

# 可选:将defaultdict转为普通字典(不转也可正常使用)
name_relations = dict(name_relations)
print(name_relations)

补充:基于已有ID关联字典转换

如果已经通过was_in_movie生成了ID为键的关联字典,也可以直接转换为姓名格式:

# 已生成的ID关联字典
id_relations = {1: {2, 3}, 2: {1}, 3: {1, 4}, 4: {3}}

name_relations = {}
for actor_id, co_actor_ids in id_relations.items():
    # 转换键为姓名
    actor_name = actors[str(actor_id)]
    # 转换集合内的ID为姓名
    co_actor_names = {actors[str(co_id)] for co_id in co_actor_ids}
    name_relations[actor_name] = co_actor_names

print(name_relations)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:30:53