如何删除嵌套字典中的指定键并调整层级结构?
调整嵌套字典结构,删除中间层级键
原始字典结构
{ '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
相关产品推荐
相关产品推荐

