使用正确的可见过滤器对我来说是一种挑战。
有人能告诉我如何转换字典列表吗?
这是我的输入数据:
"_list_of_dict":
[
{
"groupid": "11",
"hostname": "host1.local",
"timeout": "5000",
"status": "ONLINE",
},
{
"groupid": "12",
"hostname": "host1.local",
"timeout": "5000",
"status": "ONLINE",
},
{
"groupid": "12",
"hostname": "host2.local",
"timeout": "5000",
"status": "ONLINE",
}
]
而这是我想要得到的:
"_dict_of_list": {
"12": [
{
"hostname": "host2.local",
"timeout": "5000",
"status": "ONLINE",
},
{
"host": "host1.local",
"timeout": "5000",
"status": "ONLINE",
}
],
"11": [
{
"host": "host1.local",
"timeout": "5000",
"status": "ONLINE",
}
],
可能列表中包含不同数量的groupid
,每个组可能有不同数量的主机,我必须通过groupid
将它们组合在一起。
我自己找到了解决办法。这对我来说很有效。谢谢每一个试图帮助我的人,我真的很感激。
_dict_of_list: >-
{{ _dict_of_list | default({})
| combine({item.groupid: []
+ [{
'hostname': item.hostname,
'timeout': item. timeout,
'status': item. status
}]
+ _dict_of_list[item.groupid] | default([]) })
}}
with_items: "{{ _list_of_dict }}"