簡體   English   中英

使用jinja2計算集合差異(在ansible中)

[英]Calculate set difference using jinja2 (in ansible)

我的ansible playbook中有兩個字符串列表,我試圖找到列表A中不在列表B中的元素 - 一組差異。 但是,我似乎無法訪問python set數據結構。 這就是我想要做的事情:

- set_fact:
    difference: "{{ (set(listA) - set(listB)).pop() }}"

但是我得到一個錯誤,說'set' is undefined 對我有意義,因為它不是一個變量,但我不知道還能做什么。 如何計算這兩個列表的設定差異? 在ansible中使用股票jinja功能是不可能的?

事實證明, 在ansible (不是通用的jinja)中有一個內置的過濾器稱為difference

這完成了我在我的問題中嘗試做的事情:

"{{ (listA | difference(listB)) | first }}"

在通用Jinja2的,這可以很容易地實現,結合reject過濾器與in測試:

"{{ listA | reject('in', listB) | first }}"

這需要Jinja> = 2.10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM