当前位置: 首页 > 知识库问答 >
问题:

Anable-如果满足条件,则从判决中删除项目

上官修文
2023-03-14

我有一个dict1,我想从中删除b为空的所有项目,这不仅意味着属性b,而且意味着整个字典。

- hosts: localhost
  gather_facts: false

  vars:
    dict1: [{a:1,b:2,c:3},{a:1,b:"null",c:3},{a:1,b:2,c:3}]

  tasks: 
  - set_fact:
      dict2: "{{item | reject(item.b, 'eq', 'null')}}"
    loop: "{{dict1}}"

输出应如下所示:

dict2: [{a:1,b:2,c:3},{a:1,b:2,c:3}]

注意:字典中可以有 N 个项目和/或同一字典中的 N 个键值对。此外,字典中可能有 N 个具有空值的 b,因此必须删除所有 b。

共有3个答案

锺玺
2023-03-14

具有简单循环和测试的解决方案:

- name: "tips2"
  hosts: localhost
  gather_facts: false

  vars:
    dict1: [{"a": 1, "b": 2, "c": 3}, {"a": 1, "b": "null", "c": 3},{"a": 1, "b": 2, "c": 3}]

  tasks: 
    - set_fact:
        dict2: "{{dict2 | default([]) +  [item] }}"
      loop: "{{dict1}}"
      when: item.b != "null"

    - name: debug users      
      debug:
        msg: "{{dict2}}"
 

结果:

ok: [localhost] => {
    "msg": [
        {
            "a": 1,
            "b": 2,
            "c": 3
        },
        {
            "a": 1,
            "b": 2,
            "c": 3
        }
    ]
}
谭志用
2023-03-14

给定具有值而不是字符串“null”的字典

dict1:
  - {a: 1, b: 2, c: 3}
  - {a: 1, b: null, c: 3}
  - {a: 1, b: 2, c: 3}

使用不带测试的选件

    - debug:
        var: dict1|selectattr('b')

dict1|selectattr('b'):
  - {a: 1, b: 2, c: 3}
  - {a: 1, b: 2, c: 3}

报价:

如果未指定测试,则属性的值将计算为布尔值。

公冶京
2023-03-14

可以使用选择器筛选器来筛选词典列表。

给定任务:

- debug:
    var: dict1 | selectattr('b', '!=', 'null')

这将产生:

dict1 | selectattr('b', '!=', 'null'):
  - a: 1
    b: 2
    c: 3
  - a: 1
    b: 2
    c: 3
 类似资料:
  • 问题内容: 我有一个需要处理的大型numpy数组,以便在满足条件的情况下将每个元素更改为1或0(稍后将用作像素遮罩)。数组中大约有800万个元素,而我当前的方法对于简化流程花费的时间太长: 是否有一个numpy函数可以加快速度? 问题答案: 您可以使用以下方法来缩短它:

  • 我需要一些关于以下postgres功能的帮助 我有下表和列: 我最初在中有几个数组,然后运行一个查询(实际上是一组3个查询),选择数组,附加它们,然后将附加的数组插入表中。 我需要循环这个插入查询,直到其中一个数组()达到预定义的大小,比如长度50。 我基本上需要写一些 但是我找不到正确的语法来写这个 我http://www.postgresql.org/docs/8.4/static/plpgs

  • 我有一个JSON文件,当我试图删除python dict中的项目时,我从返回KeyError:0的API获取该文件。我认为这是我缺乏JSON技能和格式的综合结果。 我的目标是从 我的代码: JSON示例:

  • 问题内容: 我想从这些数据结构中按值删除满足某些条件的元素 从上一个问题中,我找到了使用的简洁答案,但是似乎需要精确匹配。 在这里,我想从表或映射中删除其值小于特定阈值的元素。您编写代码的方式是什么? 我只检查了两个答案,这些是关于map的答案,表情况如何?我的解决方案如下。 问题答案: Iterator iterator = hmap.values().iterator(); while (it

  • 在我的实际数据集中,我有许多列以cent_dept开始,以agg结束,所以选择与组件匹配的用户是非常重要的。 谢谢你的帮助!

  • 问题内容: 我有一个数组,当对象被修改时,我会将对象推送到该数组。如果用户按下,那么我将遍历并为他们应用适当的API调用。 如果API调用成功完成,我想从中删除该项目,否则将其保留在内部并通知用户某些项目未成功保存。我目前有这个(在AngularJS中) 有更好的方法吗? 问题答案: 您已经在使用诺言,您可能希望端到端地兑现。另外,您过早地兑现了承诺。 假设您不愿自我证明自己处于次优状态,那么您仍