|
|||||||
Как в Ansible проверить, что все элементы словаря содержат одинаковые значения
Время создания: 31.05.2023 13:51
Текстовые метки: ansible, python, jinja2, dict, dictionary, словарь, элементы, одинаковые, равные, содержат, содержатся
Раздел: Компьютер - Linux - Оркестрация - Ansible
Запись: xintrea/mytetra_syncro/master/base/1685530296tso3r80ib9/text.html на raw.github.com
|
|||||||
|
|||||||
Проверить что в элементах словаря содержатся только одинаковые значения, можно стандартными методами и фильтрами, без написания самодельных. Например, если имеется словарь anyDict, то из него можно получать следующие данные: {{ anyDict.keys() | list }} - список ключей {{ anyDict.values() | list }} - список значений {{ anyDict.values() | list | unique }} - список из одних только уникальных значений {{ anyDict.values() | list | unique | length }} - количество уникальных значений в словаре Если в словаре количество уникальных значений равно 1, значит все элементы словаря содержали одинаковые значения. Элементарная логика. Следует только помнить, что Jinja-шаблоны возвращают строки. Поэтому при использовании числового значения, полученного из вышеуказанного выражения, надо применять фильтры приведения типа, например int. При этом фильтр приведения типа надо использовать непосредственно в самом выражении вычисления значения: - set_fact: unicalCount: "{{ anyDict.values() | list | unique | length }} - debug: msg: "Словарь содержит неуникальные значения" when: "(unicalCount | int) > 1" Необходимо понимать, что стандартными преобразованиями словарей и списков, пользуясь заодно теорией множеств, можно вытянуть из данных достаточно много информации и различных метрик. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|