Python嵌套字典重命名顶层key及删除内层指定key的问题求解
嵌套字典批量修改键名与删除指定键解决方案
可直接运行的实现代码
# 原始输入字典(已补全原示例中遗漏的键间逗号) original_dict = { 'dict_1': {'key1': ['data1', 'data2', 'data3'], 'key2': ['1', '2', '3'], 'key3': ['value1', 'value2', 'value3']}, 'dict_2': {'key1': ['data1', 'data2', 'data3'], 'key2': ['1', '2', '3'], 'key3': ['value1', 'value2', 'value3']} } result = {} # 按名称排序顶层键,保证dict_1、dict_2的顺序对应A、B的生成顺序 for idx, old_key in enumerate(sorted(original_dict.keys())): # 生成顺序大写字母作为新键 new_key = chr(ord('A') + idx) inner_dict = original_dict[old_key] # 删除key3,传入默认值避免key不存在时抛出KeyError inner_dict.pop('key3', None) result[new_key] = inner_dict print(result)
运行后输出和你给出的期望结果完全一致:
{'A': {'key1': ['data1', 'data2', 'data3'], 'key2': ['1', '2', '3']}, 'B': {'key1': ['data1', 'data2', 'data3'], 'key2': ['1', '2', '3']}}
常见问题定位
- 字母生成错误:如果之前用
ord('a')作为基准会生成小写字母,替换为ord('A')即可得到大写字母序列 - 删除key3不生效:如果操作的是内层字典的深拷贝/浅拷贝,删除操作不会作用到最终存入结果的字典,直接操作原内层字典即可
- 删除时报错:如果部分内层字典不存在key3,直接用
del inner_dict['key3']或者不加默认值的pop会抛出KeyError,加上pop的第二个参数None即可兼容无key3的场景
内容的提问来源于stack exchange,提问作者user11464178
相关产品推荐
相关产品推荐

