Ansible技术问题:如何对整数列表进行排序?附示例代码
Ansible整数列表排序方法
嘿,我来帮你搞定这个问题~首先提个小细节:你写的numberlist: {3,7,1,6,2,7,4,9}其实定义的是集合(set),集合的特性是自动去重且无序,如果你需要的是可排序的有序序列,建议用方括号[]定义成列表,比如:
vars: numberlist: [3,7,1,6,2,7,4,9]
回到排序的问题,Ansible基于Jinja2模板引擎,提供了sort()过滤器,专门用来对列表进行排序,完全满足你的需求!下面给你几个实用的示例:
基础升序排序
默认情况下,sort()会按数值升序排列列表:
--- - name: 测试列表排序 hosts: localhost vars: numberlist: [3,7,1,6,2,7,4,9] tasks: - name: 打印升序排序结果 debug: msg: "升序排序后的列表: {{ numberlist | sort }}"
执行后会输出:升序排序后的列表: [1, 2, 3, 4, 6, 7, 7, 9]
降序排序
如果需要降序排列,只需要给sort()加上reverse=true参数:
- name: 打印降序排序结果 debug: msg: "降序排序后的列表: {{ numberlist | sort(reverse=true) }}"
执行后输出:降序排序后的列表: [9, 7, 7, 6, 4, 3, 2, 1]
处理集合转列表排序
如果你的变量确实是集合类型(比如保留了最初的{}定义),可以先通过list过滤器把集合转成列表,再排序(集合转列表会自动去重):
vars: numberset: {3,7,1,6,2,7,4,9} tasks: - name: 集合转列表后排序 debug: msg: "去重并排序后的列表: {{ numberset | list | sort }}"
执行后输出:去重并排序后的列表: [1, 2, 3, 4, 6, 7, 9]
内容的提问来源于stack exchange,提问作者skadoo sh
相关产品推荐
相关产品推荐

