pyYaml - экспорт без "-" - PullRequest
       3

pyYaml - экспорт без "-"

0 голосов
/ 28 февраля 2019

Мне нужно экспортировать dict в yaml с pyyaml ​​без "-"

    export_dash_dict = {}
    export_dash_dict["dashboards"] = []
    for dashboard in dashboards_to_export:
        single_dashboard = {}
        single_dashboard[dashboard.title] = {}
        single_dashboard[dashboard.title]["owner"]          = dashboard.owner.username
        single_dashboard[dashboard.title]["description"]    = dashboard.description
        export_dash_dict["dashboards"].append(single_dashboard)

    final_yaml = yaml.dump(export_dash_dict, default_flow_style=False,default_style=None)

Вот как pyyaml ​​экспортирует мой dict:

dashboards:
- Dashboard title 1:
    description: First
    owner: username1
- Dashboard title 2:
    description: Second
    owner: username2

Используя анализ в сети, эточто я получаю:

{
  "dashboards": [
    {
      "Dashboard title 1": {
        "owner": "username1", 
        "description": "First"
      }
    }, 
    {
      "Dashboard title 2": {
        "owner": "username2", 
        "description": "Second"
      }
    }
  ]
}

Но мне нужно что-то вроде этого:

dashboards:
 Dashboard title 1:
    description: First
    owner: username1
 Dashboard title 2:
    description: Second
    owner: username2

с онлайн-анализатором:

{
  "dashboards": {
    "Dashboard title 2": {
      "owner": "username2", 
      "description": "Second"
    }, 
    "Dashboard title 1": {
      "owner": "username1", 
      "description": "First"
    }
  }
}

Таким образом, я могу избежатьвесь уровень данных, когда я использую yaml.load

Я использую: default_flow_style = ложные параметры, но я не могу найти способ избежать "-" Это стандарт YAML?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Благодаря Тореку, это правильный способ построения дикта:

    export_dash_dict = {}
    export_dash_dict["dashboards"] = {}
    for dashboard in dashboards_to_export:
        export_dash_dict["dashboards"][dashboard.title] = {}
        export_dash_dict["dashboards"][dashboard.title]["owner"]          = dashboard.owner.username
        export_dash_dict["dashboards"][dashboard.title]["description"]    = dashboard.description

    final_yaml = yaml.dump(export_dash_dict, default_flow_style=False,default_style=None)
0 голосов
/ 28 февраля 2019

Дамп yaml правильно экспортирует вашу структуру данных.У вас есть словарь (export_dash_dict) с одним ключом и одним значением.Один ключ - dashboards, а его значение представляет собой список из двух элементов.Эти два элемента являются словарями (содержание которых мы не будем здесь рассматривать, но у них есть две пары ключ-значение).

Структура данных, которую вы хотите экспортировать, не является словарем с одним ключомпара / значение, где значением является список, а скорее словарь с двумя парами ключ-значение.Первый ключ должен быть Dashboard title 1, а его значение должно быть словарем (с двумя парами ключ-значение, которые мы не будем здесь детализировать).Второй ключ должен быть Dashboard title 2, а его значение должно быть словарем (опять же, с двумя парами ключ-значение, которые мы не будем детализировать).

Если вы хотите, чтобы yaml.dump написал такойструктура данных, вам нужно построить эту структуру данных.

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