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

如何基于输入字典d1与列表l1生成目标字典d2?

实现字典反向映射的解决方案

要完成从d1到d2的转换,核心是建立值到键的反向映射,再根据l1的顺序生成目标字典。以下是两种简洁的实现方式:

方法一:基础字典操作

无需导入额外模块,用普通字典完成映射构建:

d1 = {'A1':['b1','b2','b3'], 'A2':['b2', 'b3'], 'A3':['b1', 'b5']}
l1 = ['b2', 'b5', 'b1', 'b3']

# 构建值到键的临时映射
temp_map = {}
for a_key, b_values in d1.items():
    for b_val in b_values:
        # 若当前b值未在映射中,初始化空列表
        if b_val not in temp_map:
            temp_map[b_val] = []
        temp_map[b_val].append(a_key)

# 根据l1生成目标字典d2
d2 = {b: temp_map[b] for b in l1}

# 输出结果:{'b2': ['A1', 'A2'], 'b5': ['A3'], 'b1': ['A1', 'A3'], 'b3': ['A1', 'A2']}
print(d2)

方法二:用collections.defaultdict简化代码

借助defaultdict可以省去判断键是否存在的步骤,让代码更简洁:

from collections import defaultdict

d1 = {'A1':['b1','b2','b3'], 'A2':['b2', 'b3'], 'A3':['b1', 'b5']}
l1 = ['b2', 'b5', 'b1', 'b3']

# 自动为不存在的键创建空列表
temp_map = defaultdict(list)
for a_key, b_values in d1.items():
    for b_val in b_values:
        temp_map[b_val].append(a_key)

# 生成d2,若l1含d1中没有的元素,可改用get方法设默认值:temp_map.get(b, [])
d2 = {b: temp_map[b] for b in l1}

注意事项

如果l1中包含d1值列表里没有的元素,直接取temp_map[b]会触发KeyError。此时可以用temp_map.get(b, [])来返回空列表作为默认值,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:12:49