Назад | Перейти на главную страницу

Ansible: извлечь ключ, привязанный к минимальному значению, в списке из нескольких словарей

В моем сборнике сценариев Ansible мне нужно извлечь имя (например, Кори в этом примере), которое имеет самый низкий балл (например, 7).
Как это сделать с данным списком словарей ..?

[
        {
            "name": "james", 
            "score": "48"
        }, 
        {
            "name": "darcy", 
            "score": "37"
        },
        {
            "name": "cory", 
            "score": "7"
        }
 ]

Откуда берутся данные? Если вы можете убедиться, что ваш «счет» отображается как int, а не как строка, это должно быть довольно легко.

- hosts: localhost
  gather_facts: no
  vars:
    data: [ { "name": "james", "score": 48 }, { "name": "darcy", "score": 37 }, { "name": "cory", "score": 7 } ]
  tasks:
  - debug:
      msg: "{{ (data |sort(attribute='score'))[0]['name'] }}"

# TASK [debug] *******
# ok: [localhost] => {
#     "msg": "cory"
# }