目的是将json格式的省市区编号数据中的编号和地址互换位置,采用了递归处理的思路:
原数据格式为:
{
"110000": {
"name": "北京市",
"child": {
"110100": {
"name": "市辖区",
"child": {
"110101": "东城区",
"110102": "西城区",
"110105": "朝阳区",
...
}
}
}
},
...
}
如上,目的是将 ‘110000’与 ‘北京市’呼唤,‘110100’与‘市辖区’互换…。
def func0(data):
demo_dict = dict()
for k, v in data.items(): # "510101": "市辖区",
if k.isdigit() and isinstance(v, dict): # "820000": {...}
if isinstance(v.get('child'), dict):
demo_dict[v.get('name')] = {'name': k, 'child': func0(v.get('child'))}
else:
demo_dict[v.get('name')] = {'name': k, 'child': v.get('child')}
else:
demo_dict[v] = k
return demo_dict
c = func0(dict_data)
json_data = json.dumps(c, ensure_ascii=False)
with open('yma.txt', "w", encoding='utf8') as f: # 指定编解码格式防止中文乱码
f.write(json_data)