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

如何删除嵌套字典中的指定键并调整层级结构?

调整嵌套字典结构,删除中间层级键

原始字典结构

{
    '2022-09-08T15:00:00Z': {
        'INMET_BRASILIA_A001_M':{
            "DVENTO": [
                {'value' : '95.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'DVENTO'}
            ],
            "TD_MN_C":[
                {'value' : '6.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'TD_MN_C'}
            ]
        },
    },
}

目标结构

需要删除中间的INMET_BRASILIA_A001_M键,让时间键直接对应气象要素数据,结构如下:

{
    '2022-10-11T14:00:00Z': {
        'PRESS_HPA': [{'value': '915.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_HPA'}],
        'PRESS_MX_HPA': [{'value': '82', 'quality': 'qf-UNCHECKED', 'quality_flag': 'UNCHECKED', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_MX_HPA'}]
    }
}

实现方法

方法1:通用处理(每个时间下仅一个中间键)

如果每个时间戳对应的子字典里只有一个中间键,不用硬编码键名,直接提取唯一值即可:

original_dict = {
    '2022-09-08T15:00:00Z': {
        'INMET_BRASILIA_A001_M':{
            "DVENTO": [{'value' : '95.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'DVENTO'}],
            "TD_MN_C":[{'value' : '6.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'TD_MN_C'}]
        },
    },
}

processed_dict = {}
for timestamp, inner_dict in original_dict.items():
    # 取出中间层级的子字典
    weather_data = next(iter(inner_dict.values()))
    processed_dict[timestamp] = weather_data

# 输出结果
print(processed_dict)

方法2:指定键名删除

如果明确知道要移除的中间键名,直接通过键取值即可:

original_dict = {
    '2022-09-08T15:00:00Z': {
        'INMET_BRASILIA_A001_M':{
            "DVENTO": [{'value' : '95.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'DVENTO'}],
            "TD_MN_C":[{'value' : '6.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD','structure' : 'INMET_BRASILIA_A001_M', 'element' : 'TD_MN_C'}]
        },
    },
}

processed_dict = {}
for timestamp, inner_dict in original_dict.items():
    # 提取目标数据并移除中间键
    weather_data = inner_dict.pop('INMET_BRASILIA_A001_M')
    processed_dict[timestamp] = weather_data

# 输出结果
print(processed_dict)

两种方法最终都会得到符合要求的字典结构,方法1更灵活,方法2更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:25:20