You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非等元素字典比较规则及Ansible断言优化需求

解决Ansible字典自定义规则断言问题

需求回顾

  • 仅校验dictionary_2中存在的键,与dictionary_1对应键的值对比
  • 当dictionary_2[key] > dictionary_1[key]时断言失败
  • dictionary_1包含额外键、或dictionary_2[key] <= dictionary_1[key]时均判定成功

解决方案代码

- name: Check dictionaries per custom rules
  assert:
    that:
      - "dictionary_2.items() | all(item => dictionary_1[item.key] >= item.value)"
    fail_msg: |
      以下键的dictionary_2值大于dictionary_1:
      {% for key, val in dictionary_2.items() %}
        {% if val > dictionary_1[key] %}
          - {{ key }}: dictionary_1值为{{ dictionary_1[key] }},dictionary_2值为{{ val }}
        {% endif %}
      {% endfor %}
    success_msg: "所有校验通过"

代码说明

  1. 断言条件:
    使用all()过滤器遍历dictionary_2的所有键值对,确保每个键对应的dictionary_1值都大于等于dictionary_2的值。只要有一个键不满足,断言就会失败。

  2. 动态错误提示:
    通过Jinja2循环生成精准的错误信息,只列出不符合规则的键,并展示dictionary_1和dictionary_2的具体数值对比,方便定位问题。

示例效果

针对你提供的示例字典:

dictionary_1:
  apple: 4
  banana: 5
  orange: 6
dictionary_2:
  apple: 5
  banana: 5

运行该任务会触发断言失败,错误提示如下:

以下键的dictionary_2值大于dictionary_1:

  • apple: dictionary_1值为4,dictionary_2值为5

内容的提问来源于stack exchange,提问作者Kooky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:42