Ansible如何从字典列表中提取指定子键对应的字典生成新列表
实现方法
你只需要使用map过滤器的attribute参数直接提取每个列表元素下的指定键值即可,无需使用extract过滤器:
new_dictionary: "{{ orig_dictionary | map(attribute='key2') | list }}"
你可以直接在set_fact模块中使用上述表达式,即可生成符合要求的new_dictionary结构。
说明
map(attribute='key2')会遍历orig_dictionary的每个字典元素,直接提取每个字典中key2对应的字典值- 末尾加
list过滤器将map返回的迭代器转为列表格式,最终得到你需要的目标结构
报错原因
你之前用extract得到字符串的原因是extract过滤器的适用场景不匹配:extract是用于从单个字典对象中提取指定键的值,你传入的是列表结构,参数不匹配时会返回错误的默认字符串值。
内容的提问来源于stack exchange,提问作者J. M. Becker
相关产品推荐
相关产品推荐

