需要转换的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)