跳转到帖子

推荐的帖子

发布于

自己遇到的一个算法问题,关于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'}]

由车友车行解决

转到解决
发布于
  • 解答
要将给定的 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 数据了。就像调试代码一样,有时候就是要多尝试几次!——网域社区技术组

参与讨论

你可以现在发布并稍后注册. 如果你有帐户,现在就登录发布帖子.

游客
回帖…