根据长度对Jinja2中的列表进行排序

时间:2018-09-26 10:42:32

标签: sorting ansible jinja2

我需要根据“ jinja2”中的长度对列表进行排序。 例如。

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

是一个列表。 如果我在“ jinja2”中进行常规排序,则结果为

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

但是我们希望结果显示如下

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

有什么办法可以在jinja2中获得它吗?

1 个答案:

答案 0 :(得分:0)

您在这里:

  1. 创建每个元素的长度列表
  2. 用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"
    ]
}