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

Python如何比对两个字典的值 生成对应键映射的结果字典

字典值匹配映射实现方案

实现逻辑

你要做的是两个字典基于value的跨字典键映射,最高效的实现方式分两步:

  • 先对dict2做键值反转,生成value -> 原key的查询映射,避免每次匹配都全量遍历dict2,把时间复杂度控制在线性级别
  • 遍历dict1的所有键值对,直接用dict1的value去反向映射里取dict2对应的key,组装成最终结果
    注:你给出的示例中dict2的value全为唯一值,不存在反转映射的键冲突问题,可直接使用该方案

可直接运行的代码

# 输入字典
dict1 = {
  "a": "121",
  "b": "132",
  "c": "312",
  "d": "434",
  "e": "564",
  "f": "663",    
}

dict2 = {
  "a": "312",
  "b": "121",
  "c": "564",
  "d": "663",
  "e": "434",
  "f": "132",    
}

# 构建dict2的value到key的反向查询表
value_to_key_dict2 = {v: k for k, v in dict2.items()}

# 生成最终匹配结果
Results = {k1: value_to_key_dict2[v1] for k1, v1 in dict1.items()}

输出验证

执行print(Results)即可得到你期望的结果:

{
  "a": "b",
  "b": "f",
  "c": "a",
  "d": "e",
  "e": "c",
  "f": "d",    
}

异常场景适配

  • 如果dict2存在重复value:反转映射时后出现的key会覆盖先出现的key,若需保留所有匹配key,可将反向映射的value存储为列表结构
  • 如果dict1存在dict2中没有的value:直接取值会抛出KeyError,可将结果生成逻辑改为{k1: value_to_key_dict2.get(v1, None) for k1, v1 in dict1.items()},自定义缺省填充值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:09:10