Добавить предмет на дикту на заданной глубине c - PullRequest
0 голосов
/ 14 января 2020

Я работаю с Elasticsearch, и мне нужно создать объект dict, JSON -подобный, для запроса сложного объединения.

Каждое объединение имеет следующий формат:

{
"aggs": {
    "agg_by_field_1": {
        "terms": {
            "script": {
                "source": "whatever"
                }
            }
         }
    }
}

Но у каждой агрегации также есть лист со следующей агрегацией:

{
"aggs": {
    "agg_by_field_1": {
        "terms": {
            "script": {
                "source": "whatever"
            }
        },
        "aggs": {
            "agg_by_field_2": {
                "terms": {
                    "script": {
                        "source": "whatever_2"
                        }
                    }
                 }
            }
         }
    }
}

Теперь у меня есть простая list с каждой из агрегаций:

[
    {
        "agg_by_field_1": {
            "terms": {
                "script": {
                    "source": "whatever"
                }
            }
        }
    },
    {
        "agg_by_field_2": {
            "terms": {
                "script": {
                    "source": "whatever_2"
                }
            }
        }
    },
]

Итак, как я могу достичь этой структуры данных, второй кусок кода, в python? Вставьте в диктовку новый лист для каждого элемента агрегации.

Спасибо

1 Ответ

0 голосов
/ 14 января 2020

Python поддерживает такие структуры из коробки. Это называется вложенным Dictionary. Вы можете прочитать больше об этом здесь: https://www.programiz.com/python-programming/nested-dictionary

На самом деле, ваш код будет работать без изменений:

>>> d = {
... "aggs": {
...     "agg_by_field_1": {
...         "terms": {
...             "script": {
...                 "source": "whatever"
...             }
...         },
...         "aggs": {
...             "agg_by_field_2": {
...                 "terms": {
...                     "script": {
...                         "source": "whatever_2"
...                         }
...                     }
...                  }
...             }
...          }
...     }
... }
>>> d
{'aggs': {'agg_by_field_1': {'terms': {'script': {'source': 'whatever'}}, 'aggs': {'agg_by_field_2': {'terms': {'script': {'source': 'whatever_2'}}}}}}}
>>> d = [
    {
        "agg_by_field_1": {
            "terms": {
                "script": {
                    "source": "whatever"
                }
            }
        }
    },
    {
        "agg_by_field_2": {
            "terms": {
                "script": {
                    "source": "whatever_2"
                }
            }
        }
    },
]
>>> d
[{'agg_by_field_1': {'terms': {'script': {'source': 'whatever'}}}}, {'agg_by_field_2': {'terms': {'script': {'source': 'whatever_2'}}}}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...