虽然这应该是一个微不足道的问题,但我无法解决这个问题。
我正在使用 Ansible(和 Jinja 模板)构建模板,并且我有一个字典列表(此处显示为 JSON):
"datacenters": [{
"description": "Main Datacenter",
"name": "main"
}, {
"description": "Secondaty Datacenter",
"name": "secondary"
}]
我想按名称过滤并打印描述。在我的模板中,我可以到这里:
{{ datacenters | selectattr("name", "equalto", "main") | list | first | to_nice_json }}
输出:
{
"description": "Main Datacenter",
"name": "main"
}
但我不能只得到描述
。例如当我使用:
{{ datacenters | selectattr("name", "equalto", "main") | list | first | attr("description") }}
我得到:
AnsibleUndefinedVariable: 'unicode object' has no attribute 'description'
我找到了这个链接 https://github.com/ansible/ansible/issues/19356谷歌搜索错误,但我没有从 list 中加载变量。 知道如何解决这个问题吗?
最佳答案
您可以对管道的结果进行分组:
{{ (datacenters | selectattr("name", "equalto", "main") | list | first).description }}
关于python - 在 Ansible/Jinja 中过滤字典列表和打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42628649/