我在 Ansible 配置中有一个字典列表
myList
- name: Bob
age: 25
- name: Alice
age: 18
address: USA
我把代码写成
- name: loop through
debug: msg ="{{item.key}}:{{item.value}}"
with_items: "{{ myList }}"
我想打印出来
msg: "name:Bob age:25 name:Alice age:18 address:USA"
我怎样才能遍历这个字典并得到键值对?因为它不知道什么是关键。如果我更改为 {{ item.name }},ansible 会工作,但我也想知道 key
如果您想遍历列表并分别解析每个项目:
- debug: msg="{{ item | dictsort | map('join',':') | join(' ') }}"
with_items: "{{ myList }}"
将打印:
"msg": "age:25 name:Bob"
"msg": "address:USA age:18 name:Alice"
如果你想将所有内容合并成一行,请使用:
- debug: msg="{{ myList | map('dictsort') | sum(start=[]) | map('join',':') | join(' ') }}"
这将给出:
"msg": "age:25 name:Bob address:USA age:18 name:Alice"
请记住,字典在 Python 中没有排序,因此您通常不能期望您的项目与 yaml 文件中的顺序相同。在我的示例中,它们在 dictsort 过滤器之后按键名排序。
我是一名优秀的程序员,十分优秀!