Как отформатировать список вложенных словарей для записи в файл в удобочитаемой форме - PullRequest
0 голосов
/ 27 сентября 2019

У меня большой список, где каждый элемент списка представляет собой словарь.В словарь вложен еще один список, который сам содержит сотни пар ключ: значение.Я хотел бы записать этот список в файл, чтобы:

  1. он был хорошо отформатирован (удобочитаемым).различные "уровни" файла имеют разные отступы
  2. это все еще список (т.е. файл начинается с [ и заканчивается ]

Мне бы хотелосьчтобы выглядеть примерно так:

[{
    "id": "1",
    "day": 20190928,
    "layer": {
        "some_value": "value",
        "some_other_value": 2,
        "some_value_int": 5,
        "imageFormat": "image/png",
    },
    "elements": [
        {
            "httpStatusCode": 200,
            "requestTime": 1553731321446,
            "some_attribute": 143,
            "some_binary_value": True,
        },
        {
            "httpStatusCode": 200,
            "requestTime": 1553731321446,
            "some_attribute": 143,
            "some_binary_value": True,
        },

        # and so on...

Я чувствую, что это должно быть тривиальным заданием, но я немного растерялся. Это то, что я пытался:

for item in converted_data:
    for key, value in item.items():
        if type(value) == dict:
            #Implement
            pass
        elif type(value) == list:
            #Implement
            pass
        else:   
            outfile.write("    {}  :  {},\n".format(key, value))

Но даже до окончанияесли я вижу, что это неправильный подход, который делает что-то очень простое очень сложным. Я смотрел на SO, но не нашел вопросов, похожих на мою проблему. Итак, как мне это сделать?

Я не знаюфайл должен быть в точности таким, как я предложил. Мне просто нужно, чтобы он был как машиночитаемым, так и машиночитаемым.

Буду благодарен за любые предложения относительно того, как решить эту проблему.

1 Ответ

1 голос
/ 27 сентября 2019
import json


list_of_dicts  # your list

data = json.dumps(list_of_dicts, indent = 4)

# write data to a file...

Это будет использовать 4 пробела для отступа, замените 4 на что-то другое, если хотите.

...