Loading... <blockquote>在本博客中,ansible是一个系列文章,我们会尽量以通俗易懂的方式总结ansible的相关知识点。 ansible系列博文直达链接:<a href="https://www.zsythink.net/archives/tag/ansible/" target="_blank" rel="noopener">ansible轻松入门系列</a> “ansible系列”中的每篇文章都建立在前文的基础之上,所以,请按照顺序阅读这些文章,否则有可能在阅读中遇到障碍。</blockquote> 话接前文,我们继续来聊聊关于循环的关键字。 今天聊聊 “with_indexed_items”的用法,顾名思义,”with_indexed_items”应该与”索引”有关,没错,”with_indexed_items”的作用就是在循环处理列表时为列表中的每一项添加”数字索引”,”索引”从0开始,这样说可能不够直观,我们来看一个小示例,示例playbook如下: <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">---</span></div> </div> <div class=""> <div><span class="enlighter-text">- hosts: test70</span></div> </div> <div class=""> <div><span class="enlighter-text"> remote_user: root</span></div> </div> <div class=""> <div><span class="enlighter-text"> gather_facts: no</span></div> </div> <div class=""> <div><span class="enlighter-text"> tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - debug:</span></div> </div> <div class=""> <div><span class="enlighter-text"> msg: </span><span class="enlighter-s0">"{{ item }}"</span></div> </div> <div class=""> <div><span class="enlighter-text"> with_indexed_items:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test1</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test2</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test3</span></div> </div> </div> </div> 上例中我们定义了一个列表,列表中有3个值,test1、test2、test3,我们使用”with_indexed_items”关键字处理这个列表,然后使用debug模块输出了item的信息,那么上例playbook执行后输出的信息如下: <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">TASK </span><span class="enlighter-g1">[</span><span class="enlighter-text">debug</span><span class="enlighter-g1">]</span> <span class="enlighter-g0">**********************************</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">0</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test1'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">0</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">0</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">1</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test2'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">1</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">1</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">2</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test3'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">2</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">2</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> </div> </div> 从上述输出信息的msg中可以看到,”with_indexed_items”在处理列表中的每一项时,按照顺序为每一项添加了编号,test1对应的索引编号是0,test2的编号是1,test3的编号是2,”with_indexed_items”将添加过编号的每一项放入到了item中,所以,我们可以在处理每一项的时候同时获取到对应的编号,playbook如下 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">---</span></div> </div> <div class=""> <div><span class="enlighter-text">- hosts: test70</span></div> </div> <div class=""> <div><span class="enlighter-text"> remote_user: root</span></div> </div> <div class=""> <div><span class="enlighter-text"> gather_facts: no</span></div> </div> <div class=""> <div><span class="enlighter-text"> tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - debug:</span></div> </div> <div class=""> <div><span class="enlighter-text"> msg: </span><span class="enlighter-s0">"index is : {{ item.0 }} , value is {{ item.1 }}"</span></div> </div> <div class=""> <div><span class="enlighter-text"> with_indexed_items:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test1</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test2</span></div> </div> <div class=""> <div><span class="enlighter-text"> - test3</span></div> </div> </div> </div> 上例中,我们已经能够通过”with_indexed_items”获取到列表中每个项的值以及对应的编号,但是,上述两个示例都是简单的单层列表,如果遇到像前文中出现的多层嵌套列表,”with_indexed_items”会怎样处理呢?我们来试试,示例playbook如下: <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">---</span></div> </div> <div class=""> <div><span class="enlighter-text">- hosts: test70</span></div> </div> <div class=""> <div><span class="enlighter-text"> remote_user: root</span></div> </div> <div class=""> <div><span class="enlighter-text"> gather_facts: no</span></div> </div> <div class=""> <div><span class="enlighter-text"> tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - debug:</span></div> </div> <div class=""> <div><span class="enlighter-text"> msg: </span><span class="enlighter-s0">"index is : {{ item.0 }} , value is {{ item.1 }}"</span></div> </div> <div class=""> <div><span class="enlighter-text"> with_indexed_items:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test1, test2 </span><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test3, test4, test5 </span><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test6, test7 </span><span class="enlighter-g1">]</span></div> </div> </div> </div> 如上例所示,我们定义了一个嵌套的列表,列表中的每一项又是一个小列表,我们使用”with_indexed_items”处理这个列表,上例执行后,输出如下 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">TASK </span><span class="enlighter-g1">[</span><span class="enlighter-text">debug</span><span class="enlighter-g1">]</span> <span class="enlighter-g0">*****************************</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">0</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test1'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">0</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 0 , value is test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">1</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test2'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">1</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 1 , value is test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">2</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test3'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">2</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 2 , value is test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">3</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test4'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">3</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test4"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 3 , value is test4"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">4</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test5'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">4</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test5"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 4 , value is test5"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">5</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test6'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">5</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test6"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 5 , value is test6"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">6</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test7'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">6</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test7"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-s0">"index is : 6 , value is test7"</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> </div> </div> 你目光如炬,一定发现了,当我们定义了两层的嵌套列表时,”with_indexed_items”会将嵌套的两层列表”拉平”,”拉平”后按照顺序为每一项编号,”拉平”效果跟之前总结的”with_flattened”效果类似(如果忘了怎样使用”with_flattened”请回顾前文),但是,当处理这种嵌套的多层列表时,”with_indexed_items”的拉平效果与”with_flattened”的完全一致么,我们再来实验一下,我们把上例的嵌套列表改的更加复杂一些,再多嵌套一层,示例playbook如下 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">---</span></div> </div> <div class=""> <div><span class="enlighter-text">- hosts: test70</span></div> </div> <div class=""> <div><span class="enlighter-text"> remote_user: root</span></div> </div> <div class=""> <div><span class="enlighter-text"> gather_facts: no</span></div> </div> <div class=""> <div><span class="enlighter-text"> tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - debug:</span></div> </div> <div class=""> <div><span class="enlighter-text"> msg: </span><span class="enlighter-s0">"{{ item }}"</span></div> </div> <div class=""> <div><span class="enlighter-text"> with_indexed_items:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test1, test2 </span><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test3, </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test4, test5 </span><span class="enlighter-g1">]</span> <span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-text"> - </span><span class="enlighter-g1">[</span><span class="enlighter-text"> test6 </span><span class="enlighter-g1">]</span></div> </div> </div> </div> 如上例所示,我们又在之前示例的基础上,多嵌套了一层列表,那么执行上例playbook,输出信息如下 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">TASK </span><span class="enlighter-g1">[</span><span class="enlighter-text">debug</span><span class="enlighter-g1">]</span> <span class="enlighter-g0">********************************</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">0</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test1'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">0</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">0</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test1"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">1</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test2'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">1</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">1</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test2"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">2</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test3'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">2</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">2</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test3"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">3</span><span class="enlighter-text">, </span><span class="enlighter-g1">[</span><span class="enlighter-text">u</span><span class="enlighter-s0">'test4'</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test5'</span><span class="enlighter-g1">]))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">3</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test4"</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test5"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">3</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test4"</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test5"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> <div class=""> <div><span class="enlighter-text">ok: </span><span class="enlighter-g1">[</span><span class="enlighter-text">test70</span><span class="enlighter-g1">]</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">(</span><span class="enlighter-text">item=</span><span class="enlighter-g1">(</span><span class="enlighter-n1">4</span><span class="enlighter-text">, u</span><span class="enlighter-s0">'test6'</span><span class="enlighter-g1">))</span><span class="enlighter-text"> =</span><span class="enlighter-g1">></span> <span class="enlighter-g1">{</span></div> </div> <div class=""> <div><span class="enlighter-s0">"changed"</span><span class="enlighter-text">: </span><span class="enlighter-k1">false</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"item"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">4</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test6"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"msg"</span><span class="enlighter-text">: </span><span class="enlighter-g1">[</span></div> </div> <div class=""> <div><span class="enlighter-n1">4</span><span class="enlighter-text">,</span></div> </div> <div class=""> <div><span class="enlighter-s0">"test6"</span></div> </div> <div class=""> <div><span class="enlighter-g1">]</span></div> </div> <div class=""> <div><span class="enlighter-g1">}</span></div> </div> </div> </div> 你肯定看出了问题所在,没错,当多加了一层嵌套以后,”with_indexed_items”并不能像”with_flattened”一样将嵌套的列表”完全拉平”,第二层列表中的项如果仍然是一个列表,”with_indexed_items”则不会拉平这个列表,而是将其当做一个整体进行编号。 关于”with_indexed_items”的使用就总结到这里,希望能够对你有所帮助。 转载自朱双印日志https://www.zsythink.net/archives/2787 Last modification:May 29, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏