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

Python中如何实现键值项数量不等的字典间的键值映射?

问题场景

现有两个映射字典:

  • 第一个字典存储a值到b值的映射dict_a_to_b
  • 第二个字典存储a值到c值的映射dict_a_to_c,该字典键值对数量多于第一个字典

初始字典代码如下:

dict_a_to_b = {2:4, 6:9, 9:3}
dict_a_to_c = {2: 0.1, 6:0.2, 9: 0.8, 10:0.6, 50: 0.77, 12:0.56}

需要生成c值到b值的映射字典dict_c_to_b,仅保留两个原字典共有的a键对应的映射关系,预期输出为:

dict_c_to_b = {0.1:4, 0.2:9, 0.8:3}
实现方案

核心思路是取两个字典键的交集(即同时存在于两个字典中的a值),以共有的a值为中间桥接,拼接c值和b值的对应关系。

推荐写法(字典推导式)

用Python原生支持的字典键集合交集操作,代码简洁执行效率高:

dict_c_to_b = {dict_a_to_c[k]: dict_a_to_b[k] for k in dict_a_to_b.keys() & dict_a_to_c.keys()}

代码说明:

  • dict_a_to_b.keys() & dict_a_to_c.keys()会直接返回两个字典共有的键,自动跳过dict_a_to_c里独有的10、50、12这类不需要处理的键
  • 遍历共有键时,直接取对应c值作为新字典的键,对应b值作为新字典的值即可
    运行后得到的结果和预期完全一致。

兼容写法(新手易读版)

如果对字典视图的集合操作不熟悉,也可以用基础循环+键存在判断的写法,逻辑完全等价:

dict_c_to_b = {}
# 遍历a到b的所有映射,只处理在a到c字典里也存在的a键
for a_key, b_val in dict_a_to_b.items():
    if a_key in dict_a_to_c:
        c_val = dict_a_to_c[a_key]
        dict_c_to_b[c_val] = b_val

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:03:21