嵌套字典层级移位:新增L0分类'food'并调整原有层级
解决层级调整与新增父分类的问题
我来帮你搞定这个数据结构的调整需求!核心就是给现有结构套一个名为food的L0父分类,同时把原来所有层级的键名(比如L0→L1、L1→L2)和对应的列表名(L1_list→L2_list)统一向下移位一级。下面是具体的实现思路和Python代码示例:
处理步骤说明
- 先创建一个顶级的父分类字典,
L0设为food,并初始化它的子列表L1_list - 遍历原数据中的每一个分类(
fruit和vegs):- 将原分类的
L0键替换为L1 - 遍历该分类下的
L1_list,把每个子项的L1键替换为L2;如果子项里有L2_list,继续把里面的L2键替换为L3(如果有更深层级同理) - 把修改后的分类字典加入到顶级父分类的
L1_list中
- 将原分类的
Python代码实现
# 原数据结构D D = [ { "L0": "fruit", "L1_list": [ {"L1": "banana"}, { "L1": "apple", "L2_list": [ {"L2": "Green apple"}, {"L2": "Red apple"} ] }, {"L1": "kiwi"} ] }, { "L0": "vegs", "L1_list": [ {"L1": "potato"}, {"L1": "carrot"} # 补全原数据里的省略项示例 ] } ] # 创建新的顶级父分类 new_structure = { "L0": "food", "L1_list": [] } # 遍历原数据,调整层级 for category in D: # 调整顶级分类的键:L0 → L1 adjusted_category = {"L1": category.pop("L0")} # 处理子列表:L1_list → L2_list adjusted_category["L2_list"] = [] for item in category["L1_list"]: # 调整子项的键:L1 → L2 adjusted_item = {"L2": item.pop("L1")} # 如果有更深层级的L2_list,继续调整为L3_list,键L2→L3 if "L2_list" in item: adjusted_item["L3_list"] = [] for sub_item in item["L2_list"]: adjusted_sub_item = {"L3": sub_item.pop("L2")} adjusted_item["L3_list"].append(adjusted_sub_item) adjusted_category["L2_list"].append(adjusted_item) # 将调整后的分类加入到父分类的L1_list中 new_structure["L1_list"].append(adjusted_category) # 输出结果(可以用print查看) print(new_structure)
最终效果
调整后的结构会变成这样:
{ "L0": "food", "L1_list": [ { "L1": "fruit", "L2_list": [ {"L2": "banana"}, { "L2": "apple", "L3_list": [ {"L3": "Green apple"}, {"L3": "Red apple"} ] }, {"L2": "kiwi"} ] }, { "L1": "vegs", "L2_list": [ {"L2": "potato"}, {"L2": "carrot"} ] } ] }
如果你的数据还有更深的层级,只需要按照这个逻辑继续嵌套处理对应的键名和列表名就可以啦~
内容的提问来源于stack exchange,提问作者Intel_code
相关产品推荐
相关产品推荐

