当dict键值为列表时,如何删除重复元素



我有以下输出,如何从"source"one_answers"dest"键值列表中删除重复的ip,并按所需输出部分所示进行打印。尝试了不起作用的{{output.msg|unique}}

{{"姓名":"A","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23","1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23"],"目标":["10.10.10.20/32","10.10.10.20/32","10.10.10.20/32","10.10.10.20/32","10.10.10.21/32","10.10.10.21/32","10.10.10.21/32","10.10.10.21/32"],},{"姓名":"B","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23","1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23"],"目标":["20.20.20.233/32","20.20.20.233/32","20.20.20.233/32","20.20.20.233/32","20.20.20.234/32","20.20.20.234/32","20.20.20.234/32","20.20.20.234/32"],},{"姓名":"C","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23"],"目标":["30.30.30.78/32","30.30.30.78/32","30.30.30.78/32","30.30.30.78/32"],}]}

所需输出:

{{"姓名":"A","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23",],"目标":["10.10.10.20/32","10.10.10.21/32",],},{"姓名":"B","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23",],"目标":["20.20.20.233/32",],},{"姓名":"C","来源":["1.1.1.0/24","2.2.2.0/23","3.3.3.0/24","4.4.4.0/23"],"目标":["30.30.30.78/32",],}]}

让我们稍微简化一下数据,例如

output:
- Name: A
source: [a, b, c, a, b, c]
dest: [x, y, z, x, y, z]
- Name: B
source: [a, b, c, a, b, c]
dest: [x, y, z, x, y, z]

迭代列表并过滤项目,例如

- set_fact:
out: "{{ out|d([]) + [{'Name': item.Name,
'source': _src,
'dest': _dst}] }}"
loop: "{{ output }}"
vars:
_src: "{{ item.source|unique }}"
_dst: "{{ item.dest|unique }}"

给出

out:
- Name: A
dest: [x, y, z]
source: [a, b, c]
- Name: B
dest: [x, y, z]
source: [a, b, c]

最新更新