You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中对双重列表数组排序并保持子元素绑定?

Ansible 嵌套列表按子数组首元素排序实现方案

核心实现思路

直接使用Ansible内置的sort过滤器,指定每个子数组的索引0位元素作为排序键即可。该方法不会拆分子数组内部的绑定元素,会完整保留所有重复条目,同首元素的条目会保留原有相对顺序,完全匹配需求中对子数组第二元素排序无要求的规则。

完整可运行示例

- hosts: localhost
  gather_facts: false
  vars:
    # 原始待排序列表
    dataset:
      - [dataone, A]
      - [datatwo, C]
      - [dataa, B]
      - [dataa, C]
      - [dataa, B]
    # 核心排序逻辑:指定按子数组第0位元素排序
    data: "{{ dataset | sort(attribute='0') }}"
  tasks:
    - name: 打印排序后结果
      debug:
        var: data

运行结果验证

执行上述playbook后,输出的data变量内容完全符合预期结构:

ok: [localhost] => {
    "data": [
        ["dataa", "B"],
        ["dataa", "C"],
        ["dataa", "B"],
        ["dataone", "A"],
        ["datatwo", "C"]
    ]
}

注意事项

  • 不要使用会拆分列表结构的过滤器(比如先提取首元素排序再重组的写法),避免子数组绑定关系错乱、重复项丢失的问题。
  • 如果需要对子数组第二个元素也做同组排序,只需要在sort后追加多级排序参数即可,当前需求无此要求无需额外配置。

内容的提问来源于stack exchange,提问作者asking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:45:32