Украсить Python вложенный код словаря - PullRequest
0 голосов
/ 27 мая 2020

Вывод:

{
  "aggs": {
    "overall": {
      "date_histogram": {
        "field": "created",
        "calendar_interval": "day",
        "time_zone": 3
      },
      "aggs": {
        "series_attribute": {
          "terms": {
            "field": 2
          },
          "aggs": {
            "types_count": {
              "value_count": {
                "field": 1
              }
            }
          }
        }
      }
    }
  }
}

Вход: агрегирование1 =

{
                "types_count": {
                            "value_count": {
                                "field": 1
                            }
                        }
            }

агрегирование2 =

{
            "series_attribute": {
                "terms": {
                    "field": 2
                }
            }
        }

aggregation3 =

{
            "overall": {
                "date_histogram": {
                    "field": "created",
                    "calendar_interval": "day",
                    "time_zone": 3
                }
            }
        }



countResponse,termResponse,dateResponse = {},{},{}
countResponse["aggs"] = aggregation1
termResponse["aggs"] = aggregation2
dateResponse["aggs"] = aggregation3
aggregation2["series_attribute"]["aggs"] = aggregation1
aggregation3["overall"]["aggs"] = termResponse["aggs"]
#print(json.dumps(dateResponse))

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Предполагая, что вам нужно назначить переменные countResponse, termResponse, dateResponse, вы можете сделать что-то вроде этого:

dateResponse = {"aggs":aggregation3}
aggregation2["series_attribute"] = countResponse = {"aggs":aggregation1}
aggregation3["overall"] = termResponse = {"aggs":aggregation2}
0 голосов
/ 27 мая 2020

Вы можете изменить код таким образом, чтобы он был более читабельным.

output = { "aggs" : aggregation3 }
aggregation3["overall"]["aggs"] = aggregation2
aggregation2["series_attribute"]["aggs"] = aggregation1
...