【问题标题】:Python read every json object and assign variable to each data linePython读取每个json对象并将变量分配给每个数据行
【发布时间】:2021-10-15 19:47:18
【问题描述】:

我有这个 json 文件:

{
    "id": "manager",
    "children": [
        {
            "id": "user1",
            "children": [],
            "data": {
                "name": "john",
                "age": "55",
                "lastname": "smith",
            }
        },
        {
            "id": "user2",
            "children": [],
            "data": {
                "name": "mark",
                "age": "56",
                "lastname": "guri",
            }
        },
        {
            "id": "user3",
            "children": [],
            "data": {
                "name": "alex",
                "age": "57",
                "lastname": "muller",
            }
        }
    ],
    "data": {
        "name": "sukri",
        "age": "24",
        "lastname": "adam"
    }
}

我正在尝试为子项下的每个信息分配一个变量。所以我以后可以访问它们..

挑战是遍历 manager 下的所有子级。
结果应该是这样的:
children1{id=user1, name=john, age="55"}
儿童2{...}
儿童3{...}

它应该到列表的末尾并捕获所有信息。

请告诉我如何实现这一点。我有以下代码不起作用:

with open('data.json') as json_file:
    data = json.load(json_file)
    print ("id:", data['manager'])
    print ("")
    for children in data['manager']:
        print("name:", children['name'])
        print("age:", children['age'])
        print("lastname:", children['lastname'])
        print("")

【问题讨论】:

  • 什么不起作用?你到底想做什么?您只是想打印出所有信息还是需要存储?
  • 当我运行脚本时,输出是“无”——我想要的只是孩子们里面的数据。例如经理有 3 个孩子的信息。我需要这些信息来分配变量,

标签: json python-3.x


【解决方案1】:

你可以用这样的方式为每个孩子创建一个包含数据的列表。

import json

with open('data.json') as json_file:
    data = json.load(json_file)

children = [child['data'] for child in data['children']]

print(children)
[{'name': 'john', 'age': '55', 'lastname': 'smith'}, {'name': 'mark', 'age': '56', 'lastname': 'guri'}, {'name': 'alex', 'age': '57', 'lastname': 'muller'}]

或者,你可以用这个创建一个孩子的字典。

children_dict = {f'user{id+1}': child['data'] for id, child in enumerate(data['children'])}

print(children_dict['user1'])
{'name': 'john', 'age': '55', 'lastname': 'smith'}

【讨论】:

  • 成功了!谢谢!是否也可以按 id 对它们进行分类?像 user1 = [{data}]
  • 不是 100% 确定你的意思,但我添加了另一个选项,它创建一个字典,允许你通过 id 访问数据。
猜你喜欢
  • 2023-01-08
  • 1970-01-01
  • 2019-05-11
  • 2013-03-15
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多