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

Python如何将字典内列表元素按另一字典映射替换并删除不匹配项

问题原因
  • 赋值逻辑错误:每次匹配到映射值就直接给目标字典的对应键赋值单个值,会覆盖之前的匹配结果,因此最终仅保留了最后一次匹配到的"Orange"
  • 未做结构兼容:匹配到多个结果时需要用列表存储,无匹配结果时要赋值为空字符串,原逻辑没有处理这两种场景
  • 循环逻辑冗余:字典本身支持O(1)时间复杂度的键存在性判断,不需要遍历映射字典d1的所有键,三层循环会大幅降低运行效率
修正后代码
# 初始化结果字典
d3 = {}
for key, elem_list in d.items():
    # 遍历当前列表的所有元素,筛选出存在d1映射的元素并替换为对应值
    mapped_res = [d1[elem] for elem in elem_list if elem in d1]
    # 无匹配结果时赋值为空字符串,否则保留映射后的列表
    d3[key] = mapped_res if mapped_res else ""

# 打印验证结果
import pprint
pprint.pprint(d3)

运行上述代码输出的d3完全符合你要求的结构,如果需要b列表的顺序和你示例中的["Banana", "Melon", "Orange"]一致,调整遍历顺序为匹配d1的键顺序即可:

d3 = {}
for key, elem_list in d.items():
    elem_set = set(elem_list)
    mapped_res = [d1[k] for k in d1 if k in elem_set]
    d3[key] = mapped_res if mapped_res else ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:24:03