Создание массива элементов словаря в YAML?

В основном пытается что-то сделать в yaml, что можно сделать с помощью этого json:

{
models:
 [
  { 
    model: "a"
    type: "x"
    #bunch of properties...
  },
  {
    model: "b"
    type: "y"
    #bunch of properties...
  }
 ]
}

До сих пор это то, что у меня есть, это не работает, потому что я повторяю свой ключ model, но что может быть правильным способом сделать это, сохранив это ключевое слово model?

models:
 model:
  type: "x"
  #bunch of properties...
 model:
  type: "y"
  #bunch of properties...

Ответ 1

Используйте тире, чтобы запустить новый элемент списка:

models:
 - model: "a"
   type: "x"
   #bunch of properties...
 - model: "b"
   type: "y"
   #bunch of properties...

Ответ 2

Вероятно, вы слишком долго рассматривали YAML, потому что то, что вы называете JSON в своем посте, не таково, это больше половины YAML и JSON. Позволяет пропустить тот факт, что JSON не позволяет комментарии, начинающиеся с #, вы должны процитировать строки, которые являются ключами, и вы должны положить , между элементами в отображении:

{
"models":
 [
  {
    "model": "a",
    "type": "x"
  },
  {
    "model": "b",
    "type": "y"
  }
 ]
}

Это правильный JSON, а также YAML, потому что YAML - это расширенный набор JSON. Например, вы можете проверить это онлайн на этом YAML-парсере.

Вы можете преобразовать его в блочный стиль, который вы предпочитаете как YAML, используя ruamel.yaml.cmd (на основе моей расширенной версии PyYAML: pip install ruamel.yaml.cmd). Вы можете использовать утилиту командной строки для преобразования JSON в блок YAML (в версии 0.9.1 вы также можете принудительно использовать стиль потока):

yaml json in.json

который получает вас:

models:
- model: a
  type: x
- model: b
  type: y

Существуют некоторые онлайн-ресурсы, которые позволяют вам делать вышеперечисленное, но, как и в случае с любыми такими услугами, не используйте их для чего-либо важного (например, для списка номеров кредитных карт и паролей).