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

Python实现:将第二个字典的值替换为第一个字典的键

替换字典中的键为映射字典对应值的解决方案

需求说明

现有两个字典:

my_dict = {1 : 1.8 , 2 : 1.2 , 3 : 0.6}
mapping_dict = {1 : "Number_1_fruit" , 2 : "Number_2_fruit" , 3 : "Number_3_fruit"}

需要检查my_dict中的键是否存在于mapping_dict中,若存在则将my_dict的键替换为mapping_dict对应的取值,最终得到:

{"Number_1_fruit" : 1.8 , "Number_2_fruit" : 1.2 , "Number_3_fruit" : 0.6}

错误代码分析

你尝试的代码存在三个问题:

  1. 键错误:mapping_dict[v]中,v是my_dict的值(如1.8),但mapping_dict的键是整数1、2、3,因此会触发KeyError。
  2. 赋值错误:应该将my_dict[k]的原数值赋给新键,而非取mapping_dict[v]。
  3. 未清理旧键:仅添加新键但未删除旧键,会导致字典同时保留新旧键。

正确解决方案

方法1:创建新字典(推荐)

通过字典推导式直接生成目标字典,避免遍历原字典时修改结构的风险:

my_dict = {1: 1.8, 2: 1.2, 3: 0.6}
mapping_dict = {1: "Number_1_fruit", 2: "Number_2_fruit", 3: "Number_3_fruit"}

new_dict = {mapping_dict[k]: v for k, v in my_dict.items() if k in mapping_dict}
print(new_dict)

输出结果:

{'Number_1_fruit': 1.8, 'Number_2_fruit': 1.2, 'Number_3_fruit': 0.6}

方法2:修改原字典

若必须修改原字典,需先收集所有待替换的键,避免遍历过程中修改字典结构引发异常:

my_dict = {1: 1.8, 2: 1.2, 3: 0.6}
mapping_dict = {1: "Number_1_fruit", 2: "Number_2_fruit", 3: "Number_3_fruit"}

# 先收集所有需要替换的键
keys_to_replace = [k for k in my_dict if k in mapping_dict]

for k in keys_to_replace:
    new_key = mapping_dict[k]
    my_dict[new_key] = my_dict[k]  # 赋值原数值给新键
    del my_dict[k]  # 删除旧键

print(my_dict)

输出结果与方法1一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:17:39