天山&云海 2024-07-31 09:44 采纳率: 0%
浏览 4

python递归出现的问题

需要转换的json数据
{"河北": [{"石家庄": [
                "长安区",
                "桥东区",
                "桥西区",
                "新华区",
                "井陉矿区",
                "裕华区",
                "井陉县",
                "正定县",
                "栾城县",
                "行唐县",
                "灵寿县",
                "高邑县",
                "深泽县",
                "赞皇县",
                "无极县",
                "平山县",
                "元氏县",
                "赵县",
                "辛集市",
                "藁城市",
                "晋州市",
                "新乐市",
                "鹿泉市",
                "其他"
            ],
            "唐山": [
                "路南区",
                "路北区",
                "古冶区",
                "开平区",
                "丰南区",
                "丰润区",
                "滦县",
                "滦南县",
                "乐亭县",
                "迁西县",
                "玉田县",
                "唐海县",
                "遵化市",
                "迁安市",
                "曹妃甸区",
                "其他"
            ],
            "秦皇岛": [
                "海港区",
                "山海关区",
                "北戴河区",
                "青龙满族自治县",
                "昌黎县",
                "抚宁县",
                "卢龙县",
                "其他"
            ],
            "邯郸": [
                "邯山区",
                "丛台区",
                "复兴区",
                "峰峰矿区",
                "邯郸县",
                "临漳县",
                "成安县",
                "大名县",
                "涉县",
                "磁县",
                "肥乡县",
                "永年县",
                "邱县",
                "鸡泽县",
                "广平县",
                "馆陶县",
                "魏县",
                "曲周县",
                "武安市",
                "其他"
            ],
            "邢台": [
                "桥东区",
                "桥西区",
                "邢台县",
                "临城县",
                "内丘县",
                "柏乡县",
                "隆尧县",
                "任县",
                "南和县",
                "宁晋县",
                "巨鹿县",
                "新河县",
                "广宗县",
                "平乡县",
                "威县",
                "清河县",
                "临西县",
                "南宫市",
                "沙河市",
                "其他"
            ],
            "保定": [
                "新市区",
                "北市区",
                "南市区",
                "满城县",
                "清苑县",
                "涞水县",
                "阜平县",
                "徐水县",
                "定兴县",
                "唐县",
                "高阳县",
                "容城县",
                "涞源县",
                "望都县",
                "安新县",
                "易县",
                "曲阳县",
                "蠡县",
                "顺平县",
                "博野县",
                "雄县",
                "涿州市",
                "定州市",
                "安国市",
                "高碑店市",
                "其他"
            ],
            "张家口": [
                "桥东区",
                "桥西区",
                "宣化区",
                "下花园区",
                "宣化县",
                "张北县",
                "康保县",
                "沽源县",
                "尚义县",
                "蔚县",
                "阳原县",
                "怀安县",
                "万全县",
                "怀来县",
                "涿鹿县",
                "赤城县",
                "崇礼县",
                "其他"
            ],
            "承德": [
                "双桥区",
                "双滦区",
                "鹰手营子矿区",
                "承德县",
                "兴隆县",
                "平泉县",
                "滦平县",
                "隆化县",
                "丰宁满族自治县",
                "宽城满族自治县",
                "围场满族蒙古族自治县",
                "其他"
            ],
            "沧州": [
                "新华区",
                "运河区",
                "沧县",
                "青县",
                "东光县",
                "海兴县",
                "盐山县",
                "肃宁县",
                "南皮县",
                "吴桥县",
                "献县",
                "孟村回族自治县",
                "泊头市",
                "任丘市",
                "黄骅市",
                "河间市",
                "其他"
            ],
            "廊坊": [
                "安次区",
                "广阳区",
                "固安县",
                "永清县",
                "香河县",
                "大城县",
                "文安县",
                "大厂回族自治县",
                "霸州市",
                "三河市",
                "其他"
            ],
            "衡水": [
                "桃城区",
                "枣强县",
                "武邑县",
                "武强县",
                "饶阳县",
                "安平县",
                "故城县",
                "景县",
                "阜城县",
                "冀州市",
                "深州市",
                "其他"
            ]
        }
    ],
    "天津": [
        {
            "天津": [
                "和平区",
                "河东区",
                "河西区",
                "南开区",
                "河北区",
                "红挢区",
                "滨海新区",
                "东丽区",
                "西青区",
                "津南区",
                "北辰区",
                "宁河区",
                "武清区",
                "静海县",
                "宝坻区",
                "蓟县",
                "塘沽区",
                "汉沽区",
                "大港区",
                "其他"
            ]
        }
    ]}

目标格式[{},{}]
[{'label': '河北', 'value': '河北', 'options': [{'label': '石家庄', 'value': '石家庄', 'options': [{'label': '长安区', 'value': '长安区'}, {'label': '桥东区', 'value': '桥东区'}, {'label': '桥西区', 'value': '桥西区'}, {'label': '新华区', 'value': '新华区'}, {'label': '井陉矿区', 'value': '井陉矿区'}, {'label': '裕华区', 'value': '裕华区'}, {'label': '井陉县', 'value': '井陉县'}, {'label': '正定县', 'value': '正定县'}, {'label': '栾城县', 'value': '栾城县'}, {'label': '行唐县', 'value': '行唐县'}, {'label': '灵寿县', 'value': '灵寿县'}, {'label': '高邑县', 'value': '高邑县'}, {'label': '深泽县', 'value': '深泽县'}, {'label': '赞皇县', 'value': '赞皇县'}, {'label': '无极县', 'value': '无极县'}, {'label': '平山县', 'value': '平山县'}, {'label': '元氏县', 'value': '元氏县'}, {'label': '赵县', 'value': '赵县'}, {'label': '辛集市', 'value': '辛集市'}, {'label': '藁城市', 'value': '藁城市'}, {'label': '晋州市', 'value': '晋州市'}, {'label': '新乐市', 'value': '新乐市'}, {'label': '鹿泉市', 'value': '鹿泉市'}, {'label': '其他', 'value': '其他'}]}, {'label': '唐山', 'value': '唐山', 'options': [{'label': '路南区', 'value': '路南区'}, {'label': '路北区', 'value': '路北区'}, {'label': '古冶区', 'value': '古冶区'}, {'label': '开平区', 'value': '开平区'}, {'label': '丰南区', 'value': '丰南区'}, {'label': '丰润区', 'value': '丰润区'}, {'label': '滦县', 'value': '滦县'}, {'label': '滦南县', 'value': '滦南县'}, {'label': '乐亭县', 'value': '乐亭县'}, {'label': '迁西县', 'value': '迁西县'}, {'label': '玉田县', 'value': '玉田县'}, {'label': '唐海县', 'value': '唐海县'}, {'label': '遵化市', 'value': '遵化市'}, {'label': '迁安市', 'value': '迁安市'}, {'label': '曹妃甸区', 'value': '曹妃甸区'}, {'label': '其他', 'value': '其他'}]}, {'label': '秦皇岛', 'value': '秦皇岛', 'options': [{'label': '海港区', 'value': '海港区'}, {'label': '山海关区', 'value': '山海关区'}, {'label': '北戴河区', 'value': '北戴河区'}, {'label': '青龙满族自治县', 'value': '青龙满族自治县'}, {'label': '昌黎县', 'value': '昌黎县'}, {'label': '抚宁县', 'value': '抚宁县'}, {'label': '卢龙县', 'value': '卢龙县'}, {'label': '其他', 'value': '其他'}]}, {'label': '邯郸', 'value': '邯郸', 'options': [{'label': '邯山区', 'value': '邯山区'}, {'label': '丛台区', 'value': '丛台区'}, {'label': '复兴区', 'value': '复兴区'}, {'label': '峰峰矿区', 'value': '峰峰矿区'}, {'label': '邯郸县', 'value': '邯郸县'}, {'label': '临漳县', 'value': '临漳县'}, {'label': '成安县', 'value': '成安县'}, {'label': '大名县', 'value': '大名县'}, {'label': '涉县', 'value': '涉县'}, {'label': '磁县', 'value': '磁县'}, {'label': '肥乡县', 'value': '肥乡县'}, {'label': '永年县', 'value': '永年县'}, {'label': '邱县', 'value': '邱县'}, {'label': '鸡泽县', 'value': '鸡泽县'}, {'label': '广平县', 'value': '广平县'}, {'label': '馆陶县', 'value': '馆陶县'}, {'label': '魏县', 'value': '魏县'}, {'label': '曲周县', 'value': '曲周县'}, {'label': '武安市', 'value': '武安市'}, {'label': '其他', 'value': '其他'}]}, {'label': '邢台', 'value': '邢台', 'options': [{'label': '桥东区', 'value': '桥东区'}, {'label': '桥西区', 'value': '桥西区'}, {'label': '邢台县', 'value': '邢台县'}, {'label': '临城县', 'value': '临城县'}, {'label': '内丘县', 'value': '内丘县'}, {'label': '柏乡县', 'value': '柏乡县'}, {'label': '隆尧县', 'value': '隆尧县'}, {'label': '任县', 'value': '任县'}, {'label': '南和县', 'value': '南和县'}, {'label': '宁晋县', 'value': '宁晋县'}, {'label': '巨鹿县', 'value': '巨鹿县'}, {'label': '新河县', 'value': '新河县'}, {'label': '广宗县', 'value': '广宗县'}, {'label': '平乡县', 'value': '平乡县'}, {'label': '威县', 'value': '威县'}, {'label': '清河县', 'value': '清河县'}, {'label': '临西县', 'value': '临西县'}, {'label': '南宫市', 'value': '南宫市'}, {'label': '沙河市', 'value': '沙河市'}, {'label': '其他', 'value': '其他'}]}, {'label': '保定', 'value': '保定', 'options': [{'label': '新市区', 'value': '新市区'}, {'label': '北市区', 'value': '北市区'}, {'label': '南市区', 'value': '南市区'}, {'label': '满城县', 'value': '满城县'}, {'label': '清苑县', 'value': '清苑县'}, {'label': '涞水县', 'value': '涞水县'}, {'label': '阜平县', 'value': '阜平县'}, {'label': '徐水县', 'value': '徐水县'}, {'label': '定兴县', 'value': '定兴县'}, {'label': '唐县', 'value': '唐县'}, {'label': '高阳县', 'value': '高阳县'}, {'label': '容城县', 'value': '容城县'}, {'label': '涞源县', 'value': '涞源县'}, {'label': '望都县', 'value': '望都县'}, {'label': '安新县', 'value': '安新县'}, {'label': '易县', 'value': '易县'}, {'label': '曲阳县', 'value': '曲阳县'}, {'label': '蠡县', 'value': '蠡县'}, {'label': '顺平县', 'value': '顺平县'}, {'label': '博野县', 'value': '博野县'}, {'label': '雄县', 'value': '雄县'}, {'label': '涿州市', 'value': '涿州市'}, {'label': '定州市', 'value': '定州市'}, {'label': '安国市', 'value': '安国市'}, {'label': '高碑店市', 'value': '高碑店市'}, {'label': '其他', 'value': '其他'}]}, {'label': '张家口', 'value': '张家口', 'options': [{'label': '桥东区', 'value': '桥东区'}, {'label': '桥西区', 'value': '桥西区'}, {'label': '宣化区', 'value': '宣化区'}, {'label': '下花园区', 'value': '下花园区'}, {'label': '宣化县', 'value': '宣化县'}, {'label': '张北县', 'value': '张北县'}, {'label': '康保县', 'value': '康保县'}, {'label': '沽源县', 'value': '沽源县'}, {'label': '尚义县', 'value': '尚义县'}, {'label': '蔚县', 'value': '蔚县'}, {'label': '阳原县', 'value': '阳原县'}, {'label': '怀安县', 'value': '怀安县'}, {'label': '万全县', 'value': '万全县'}, {'label': '怀来县', 'value': '怀来县'}, {'label': '涿鹿县', 'value': '涿鹿县'}, {'label': '赤城县', 'value': '赤城县'}, {'label': '崇礼县', 'value': '崇礼县'}, {'label': '其他', 'value': '其他'}]}, {'label': '承德', 'value': '承德', 'options': [{'label': '双桥区', 'value': '双桥区'}, {'label': '双滦区', 'value': '双滦区'}, {'label': '鹰手营子矿区', 'value': '鹰手营子矿区'}, {'label': '承德县', 'value': '承德县'}, {'label': '兴隆县', 'value': '兴隆县'}, {'label': '平泉县', 'value': '平泉县'}, {'label': '滦平县', 'value': '滦平县'}, {'label': '隆化县', 'value': '隆化县'}, {'label': '丰宁满族自治县', 'value': '丰宁满族自治县'}, {'label': '宽城满族自治县', 'value': '宽城满族自治县'}, {'label': '围场满族蒙古族自治县', 'value': '围场满族蒙古族自治县'}, {'label': '其他', 'value': '其他'}]}, {'label': '沧州', 'value': '沧州', 'options': [{'label': '新华区', 'value': '新华区'}, {'label': '运河区', 'value': '运河区'}, {'label': '沧县', 'value': '沧县'}, {'label': '青县', 'value': '青县'}, {'label': '东光县', 'value': '东光县'}, {'label': '海兴县', 'value': '海兴县'}, {'label': '盐山县', 'value': '盐山县'}, {'label': '肃宁县', 'value': '肃宁县'}, {'label': '南皮县', 'value': '南皮县'}, {'label': '吴桥县', 'value': '吴桥县'}, {'label': '献县', 'value': '献县'}, {'label': '孟村回族自治县', 'value': '孟村回族自治县'}, {'label': '泊头市', 'value': '泊头市'}, {'label': '任丘市', 'value': '任丘市'}, {'label': '黄骅市', 'value': '黄骅市'}, {'label': '河间市', 'value': '河间市'}, {'label': '其他', 'value': '其他'}]}, {'label': '廊坊', 'value': '廊坊', 'options': [{'label': '安次区', 'value': '安次区'}, {'label': '广阳区', 'value': '广阳区'}, {'label': '固安县', 'value': '固安县'}, {'label': '永清县', 'value': '永清县'}, {'label': '香河县', 'value': '香河县'}, {'label': '大城县', 'value': '大城县'}, {'label': '文安县', 'value': '文安县'}, {'label': '大厂回族自治县', 'value': '大厂回族自治县'}, {'label': '霸州市', 'value': '霸州市'}, {'label': '三河市', 'value': '三河市'}, {'label': '其他', 'value': '其他'}]}, {'label': '衡水', 'value': '衡水', 'options': [{'label': '桃城区', 'value': '桃城区'}, {'label': '枣强县', 'value': '枣强县'}, {'label': '武邑县', 'value': '武邑县'}, {'label': '武强县', 'value': '武强县'}, {'label': '饶阳县', 'value': '饶阳县'}, {'label': '安平县', 'value': '安平县'}, {'label': '故城县', 'value': '故城县'}, {'label': '景县', 'value': '景县'}, {'label': '阜城县', 'value': '阜城县'}, {'label': '冀州市', 'value': '冀州市'}, {'label': '深州市', 'value': '深州市'}, {'label': '其他', 'value': '其他'}]}]}, {'label': '天津', 'value': '天津', 'options': [{'label': '天津', 'value': '天津', 'options': [{'label': '和平区', 'value': '和平区'}, {'label': '河东区', 'value': '河东区'}, {'label': '河西区', 'value': '河西区'}, {'label': '南开区', 'value': '南开区'}, {'label': '河北区', 'value': '河北区'}, {'label': '红挢区', 'value': '红挢区'}, {'label': '滨海新区', 'value': '滨海新区'}, {'label': '东丽区', 'value': '东丽区'}, {'label': '西青区', 'value': '西青区'}, {'label': '津南区', 'value': '津南区'}, {'label': '北辰区', 'value': '北辰区'}, {'label': '宁河区', 'value': '宁河区'}, {'label': '武清区', 'value': '武清区'}, {'label': '静海县', 'value': '静海县'}, {'label': '宝坻区', 'value': '宝坻区'}, {'label': '蓟县', 'value': '蓟县'}, {'label': '塘沽区', 'value': '塘沽区'}, {'label': '汉沽区', 'value': '汉沽区'}, {'label': '大港区', 'value': '大港区'}, {'label': '其他', 'value': '其他'}]}]]}]
现在的结果, options的值多了一层[]
[{'label': '河北', 'value': '河北', 'options': [[{'label': '石家庄', 'value': '石家庄', 'options': [{'label': '长安区', 'value': '长安区'}, {'label': '桥东区', 'value': '桥东区'}, {'label': '桥西区', 'value': '桥西区'}, 。。。, {'label': '其他', 'value': '其他'}]}]]}, {'label': '天津', 'value': '天津', 'options': [[{'label': '天津', 'value': '天津', 'options': [{'label': '和平区', 'value': '和平区'}, {'label': '河东区', 'value': '河东区'}, {'label': '河西区', 'value': 。。。lue': '汉沽区'}, {'label': '大港区', 'value': '大港区'}, {'label': '其他', 'value': '其他'}]}]]}]
请问如何改写代码实现目标格式,一定要用递归的写法。

def transform(dic):
    if isinstance(dic, dict):
        #实现转换拼凑数据格式
        return [{"label": key, "value": key, "options": transform(value)} for key, value in dic.items()]
    elif isinstance(dic, list):
        return [transform(item) for item in dic]
    elif isinstance(dic, str):
        return {
            "label": dic,
            "value": dic
        }

def read_json_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return json.load(file)

# 读取第一种格式的JSON数据
source_data = read_json_file('area1.json')

# 转换数据为第二种格式
transformed_data = transform(source_data)
pprint.pprint(transformed_data)
  • 写回答

1条回答 默认 最新

  • IT工程师_二师兄 2024-07-31 09:52
    关注

    你把这些打包单独发给我

    评论

报告相同问题?

问题事件

  • 修改了问题 7月31日
  • 创建了问题 7月31日

悬赏问题

  • ¥15 vivo手机锁屏密码忘记了需要手机里的资料在百度里搜可以用ADB命令希望帮帮我
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出