Ansible 我如何映射键,在另一个dict中查找它们?

Ansible 我如何映射键,在另一个dict中查找它们?,ansible,jinja2,Ansible,Jinja2,鉴于这些词典: somedict: 键1:值1 键2:值2 另一种说法: 键1:mapped1 键2:mapped2 如何映射somedict,通过在Ansible中的otherdict中查找来更改其键?结果应该是: mapped1:value1 mapped2:value2 这似乎应该是可行的,有这样的声明: {{ somedict | map(<MAP KEY>) | list }} 成功映射键,但在此过程中会丢失值 问:“结果应该是这样的: mapped1:value1

鉴于这些词典:

somedict:
键1:值1
键2:值2
另一种说法:
键1:mapped1
键2:mapped2
如何映射
somedict
,通过在Ansible中的
otherdict
中查找来更改其键?结果应该是:

mapped1:value1
mapped2:value2
这似乎应该是可行的,有这样的声明:

{{ somedict | map(<MAP KEY>) | list }}
成功映射键,但在此过程中会丢失值

问:“结果应该是这样的:

mapped1:value1
mapped2:value2
A:下面的任务

-调试:
msg:“{{somedict|
映射('extract',otherdict)|
zip(somedict)|
口述2项|
映射(属性='value'))|
列表}”
给出列表的列表。这不是预期的结果

msg:
--mapped1
-价值1
--mapped2
-价值2
要接收字典,请应用dict函数并删除列表筛选器。比如说

-调试:
msg:“{{dict(somedict|
映射('extract',otherdict)|
zip(somedict)|
口述2项|
映射(属性='value'))}”
给予

msg:
mapped1:value1
mapped2:value2
这可以进一步简化。下面的任务提供了相同的词典

-调试:
msg:“{{dict(somedict|
映射('extract',otherdict)|
zip(somedict.values())}”

笔记
  • 将字典转换为列表将生成字典键列表。比如说
-调试:
msg:{{somedict | list}}”
给予

msg:
-关键1
-键2
  • 同样的结果也可以通过列出字典键来实现
-调试:
msg:{{somedict.keys()| list}}”
{{ somedict | map('extract', otherdict) | list }}