Сортировать список в Jinja2 по длине - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно отсортировать список по длине в "jinja2".Например ..

a = [ 'core', 'edge', 'darling', 'skynet' ]

- это список .. если я делаю обычную сортировку в "jinja2", он дает результат как

[ 'core', 'darling', 'edge', 'skynet' ]

, но мы хотим, чтобы результат отображалсякак ниже

['core', 'edge', 'skynet', 'darling']

Есть ли способ получить это в jinja2?

1 Ответ

0 голосов
/ 26 сентября 2018

Вот вы:

  1. создайте список длин каждого элемента
  2. zip исходный список с созданным в 1. - это создаст список кортежей (списков)
  3. сортировка списка, созданного в 2. вторым элементом кортежа
  4. сопоставление первого элемента кортежа

Код:

- debug:
    msg: "{{ a | zip(a|map('count')) | sort(attribute=1) | map(attribute=0) | list }}"

Результат:

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": [
        "core",
        "edge",
        "skynet",
        "darling"
    ]
}
...