Home > Back-end >  How can I use the append function to make a list of dictionaries in a list of dictionaries
How can I use the append function to make a list of dictionaries in a list of dictionaries

Time:12-25

I have a dictionary consisting of four parameters: teacher, day, time, and subject. When I write them to a JSON file, they look like this:

[
    {"day": "Monday",
    "lesson": "Math",
    "teacher": "Mr John",
    "time": "8:00"},
    {"day": "Monday",
     "lesson": "Math",
     teacher": "Mr John",
     "time": "9:00"},
    ...
    ]

But I need to make a dictionary list in the dictionary list so that the JSON file looks like this:

[
    {"teacher": "Mr John",
    lessons:[
    {"day": "Monday",
    "time": "8:00",
    "lesson: "Math"},
    {"day": "Monday",
    "time": "9:00",
    "lesson: "Math"},
    ...
    ]}]

I tried the following code:

 lst = []
    my_list = []
    my_dict = {"teacher": "Mr John",
    "lessons":
    my_list.append(
    {"day": "Monday",
    "time": "8:00",
    "lesson": "Math"},
    {"day": "Monday",
    "time": "9:00",
    "lesson": "Math"},
    )
    }
    lst.append(my_dict)
    lst.append(my_list)
    with open("schedule.json", "w", encoding='utf-8') as json_file:
        json.dump(lst, json_file, indent=4, sort_keys=True, ensure_ascii=False)

That's what I get:

[
    {"lessons": null,
    "teacher": "Mr John"},
    [
    {"day": "Monday",
    "lesson": "Math",
    "time": "8:00"}
    ],
    {"lessons": null,
    "teacher": "Mr John"},
    [
    {"day": "Monday",
    "lesson": "Math",
    "time": "9:00"}
    ]

The teacher is constantly being written again instead of once, the value lessons are empty, and each lesson is written to a new array. How do I fix/write the code so that I get the JSON file I need? I'm sorry if there was such a question already; I'm super new to this site and Python. Thank you in advance for your answers!

CodePudding user response:

You will need to update this portion, like so

lst = []
my_dict = {"teacher": "Mr John", "lessons": []}
my_dict["lessons"].append({"day": "Monday", "time": "8:00", "lesson": "Math"})
my_dict["lessons"].append({"day": "Monday", "time": "9:00", "lesson": "Math"})
lst.append(my_dict)

with open("schedule.json", "w", encoding='utf-8') as json_file:
    json.dump(lst, json_file, indent=4, sort_keys=True, ensure_ascii=False)
  • Related