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

如何基于另一个字典修改Python字典的键名?

问题:基于映射字典重命名原字典的键

现有一个包含键值对的Python字典,需要根据另一个字典的键值映射来重命名原字典的键,具体示例如下:

原数据字典:

data = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 

键映射规则:

key_changes ={'a': 'a1', 'b': 'b1'}

预期输出:

{'a1': 1, 'b1': 2, 'c': 3, 'd': 4} 

你尝试用字典推导式解决,但出现了语法错误,错误代码如下:

res = {
    key_chages[_key]:_value       
    else _key:_value
    for _key,_value in data.items()
    if _key in key_chages
    
}

错误原因分析

你的代码存在两个问题:

  1. 语法错误:字典推导式中不能直接使用else来拆分键值对结构,正确的做法是对键进行条件处理。
  2. 数据丢失风险:if _key in key_chages会过滤掉所有不在映射规则里的键,导致最终结果丢失c、d这类不需要重命名的键。

正确解法

方法1:简洁的字典推导式(推荐)

利用dict.get()方法处理键的替换——该方法会优先从映射字典中取新键,不存在则保留原键,同时保留所有键值对:

res = {key_changes.get(_key, _key): _value for _key, _value in data.items()}

方法2:循环遍历(直观易懂)

如果对推导式不熟悉,也可以用循环逐个处理键值对:

res = {}
for key, value in data.items():
    new_key = key_changes.get(key, key)
    res[new_key] = value

两种方法都能得到符合预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:41:08