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

Pythonic方式实现嵌套字典键值互换及嵌套键重命名方案问询

一行字典推导式实现嵌套字典的键值互换与键重命名

没问题,这事儿用一行字典推导式完全能搞定,而且不用itertools这类工具,纯Python基础语法就够。先给你举个贴合需求的示例,再拆解推导式的逻辑:

示例场景

假设你的原始嵌套字典是这样的:

original_dict = {
    "fruit": {"name": "apple", "color": "red"},
    "vegetable": {"name": "carrot", "color": "orange"},
    "grain": {"name": "rice", "color": "white"}
}

你想要的目标结构是:把内层字典的name值作为新的外层键,同时把原来的外层键(比如fruit)重命名为category,保留其他嵌套键,最终得到:

target_dict = {
    "apple": {"category": "fruit", "color": "red"},
    "carrot": {"category": "vegetable", "color": "orange"},
    "rice": {"category": "grain", "color": "white"}
}

一行实现的推导式

target_dict = {v["name"]: {"category": k, **v} for k, v in original_dict.items()}

逻辑拆解

这个推导式完全基于基础的字典推导和字典解包语法,每一部分的作用清晰明了:

  • 外层遍历:for k, v in original_dict.items() —— 拿到原始字典的外层键k(比如"fruit")和对应的内层字典v
  • 新外层键:v["name"] —— 用内层字典里的name值作为新字典的外层键
  • 新内层字典:{"category": k, **v} ——
    1. 先添加重命名后的键值对:"category": k,把原来的外层键转成内层的category键
    2. 用**v解包原始内层字典的所有键值对,自动保留其他嵌套键(比如color)

特殊情况处理

如果你的原始内层字典里恰好存在category键(会被覆盖),或者你想移除原来的name键,可以稍微调整推导式,过滤掉name键:

target_dict = {
    v["name"]: {"category": k, **{key: val for key, val in v.items() if key != "name"}} 
    for k, v in original_dict.items()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:46:31