我有两个字典:
source_list:
myFlag1: true
MyFlag2: false
第二个字典:
target_list:
MyFlag1: false
MyFlag2: false
键总是相同的,但是顺序还不严格。 我如何突出它们之间的区别? 我可以使用dict2items将列表转换为
source_list:
- key: MyFlag1
value: true
- key: MyFlag2
value: false
但是我又一次感到困惑,我该如何比较它们……当然,我可以循环两个指令并将它们一一比较,但是看起来并不十分有效。 任何帮助将不胜感激!
答案 0 :(得分:0)
问:“如何比较两个具有相同键的字典?”
A:例如,如果源键组和目标键组之间没有差异,则下面的循环比较键。
vars:
source_list:
MyFlag1: true
myFlag3: true
MyFlag2: false
target_list:
myFlag3: true
MyFlag1: false
MyFlag2: false
tasks:
- debug:
msg: "{{ item }} is {{ (source_list[item] == target_list[item])|
ternary('OK', 'KO') }}"
loop: "{{ source_list.keys()|sort }}"
when: "source_list.keys()|
symmetric_difference(target_list.keys())|
length == 0"
给予
"msg": "MyFlag1 is KO"
"msg": "MyFlag2 is OK"
"msg": "myFlag3 is OK"
出于调试目的,可以先比较键。例如
- debug:
msg: |
{% if source_list.keys()|symmetric_difference(target_list.keys())|length == 0 %}
True
{% else %}
False
{% endif %}