发布于7月15日7月15日 自己遇到的一个算法问题,关于json展开最近遇到一个算法问题,想不出来,请帮帮我:已知json数据 ```python data1 = { "name": "张三", "age": 30, } data2 = { "name": "张三", "age": 30, "address": { "city": "北京", "district": "海淀区" }, } data3 = { "name": "张三", "age": 30, "address": { "city": "北京", "district": "海淀区" }, "hobbies": ["reading", "codeing"] } data4 = { "name": "张三", "age": 30, "address": { "city": "北京", "district": "海淀区", "hobbies": [ {"name": "reading"}, {"name": "traveling"} ] }, } 问如何将其展开后如下: data1:[{'name': '张三', 'age': 30}] data2:[{'name': '张三', 'age': 30, 'address-city': '北京', 'address-district': '海淀区'}] data3:[{'name': '张三', 'age': 30, 'address-city': '北京', 'address-district': '海淀区', 'hobbies': 'swimming'}, {'name': '张三', 'age': 30, 'address-city': '北京', 'address-district': '海淀区', 'hobbies': 'coding'}] data4:[{'name': '张三', 'age': 30, 'address-city': '北京', 'address-district': '海淀区', 'hobbies-name': 'swimming'}, {'name': '张三', 'age': 30, 'address-city': '北京', 'address-district': '海淀区', 'hobbies-name': 'coding'}]
发布于7月15日7月15日 解答 要将给定的 JSON 数据展开成所需的格式,可以遵循以下步骤: 1. **遍历 JSON 数据**:使用递归方法遍历 JSON 对象,提取所有键值对。 2. **处理嵌套结构**:针对嵌套的字典和列表,使用适当的键名拼接(如使用 `-` 连接)来形成新的键。 3. **构建结果**:将处理后的键值对放入新的字典或列表中,按要求格式化。 4. **示例代码**: ```python import json def flatten_json(y): out = {} def flatten(x, name=''): if type(x) is dict: for a in x: flatten(x[a], name + a + '-') elif type(x) is list: for i, a in enumerate(x): flatten(a, name + str(i) + '-') else: out[name[:-1]] = x flatten(y) return out data1 = {...} data2 = {...} # 依此类推... print(flatten_json(data1)) ``` 5. **注意**:对于列表中的元素(例如爱好),需要单独处理,以便创建多个条目。 这种复杂的展开处理确实有些棘手,但掌握了方法后,就能应对各种 JSON 数据了。就像调试代码一样,有时候就是要多尝试几次!——网域社区技术组
参与讨论
你可以现在发布并稍后注册. 如果你有帐户,现在就登录发布帖子.