我搜索并尝试各种方法将列表拆分为两个列表。 没有传统的过滤器或任何支持的东西。 有关于将列表合并为一个但不是相反的示例和帖子。
我开发了下面的代码,但它不能用于非常奇怪的原因,list没有属性0?
-p
这是Ansible 2.1.1.0的试运行结果
---
- hosts: localhost
gather_facts: no
vars:
- listA: ['a','b','c','d']
- listB: []
- listC: []
tasks:
- block:
- debug:
var: listA[0]
- debug:
var: listB
- debug:
var: listC
- set_fact:
listB: "{{ listB + [listA[item]] }}"
with_sequence: start=0 end=3 stride=2
- set_fact:
listC: "{{ listC + [listA[item]] }}"
with_sequence: start=1 end=3 stride=2
- block:
- debug:
var: listA
- debug:
var: listB
- debug:
var: listC
答案 0 :(得分:2)
我找到了原因。
关于错误消息“'list object'没有属性u'0'”的问题是Ansible没有将0识别为数字,但它认为0是字符串。 什么? Ansible如何迭代开始,结束并跨步并将值存储到“String”中? - 我不知道。
但问题通过以下代码更新解决了:
---
- hosts: localhost
gather_facts: no
vars:
- listA: ['a','b','c','d']
- listB: []
- listC: []
tasks:
- block:
- debug:
var: listA[0]
- debug:
var: listB
- debug:
var: listC
- set_fact:
listB: "{{ listB + [ listA[item|int] ] }}"
with_sequence: start=0 end=3 stride=2
- set_fact:
listC: "{{ listC + [ listA[item|int] ] }}"
with_sequence: start=1 end=3 stride=2
- block:
- debug:
var: listA
- debug:
var: listB
- debug:
var: listC
结果是:
$ ansible-playbook test_sequenceeasy.yml
[WARNING]: log file at '{{planfile | dirname}}/AnsibleLog.txt' is not writeable and we cannot create it, aborting
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"listA[0]": "a"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"listB": []
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"listC": []
}
TASK [set_fact] ****************************************************************
ok: [localhost] => (item=0)
ok: [localhost] => (item=2)
TASK [set_fact] ****************************************************************
ok: [localhost] => (item=1)
ok: [localhost] => (item=3)
TASK [debug] *******************************************************************
ok: [localhost] => {
"listA": [
"a",
"b",
"c",
"d"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"listB": [
"a",
"c"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"listC": [
"b",
"d"
]
}
PLAY RECAP *********************************************************************
localhost : ok=8 changed=0 unreachable=0 failed=0