如何从 Ansible 列表中删除项目?
How to remove item from Ansible list?
我需要从列表中删除一些项目
"my_list_one": [
"item1",
"item2",
"item3"
] }
我需要删除包含字符串“2”的项目。结果,我需要 list as
"my_list_one": [
"item1",
"item3"
] }
我是怎么实现的?
@techraf answer 的更好变体:
{{ my_list_one | reject('search','2') | list }}
您也可以根据需要使用pop()
或remove()
。
pop(n)
删除列表的第 n 个元素(从 0 开始)。负 n 值从列表末尾开始计数。
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.pop(3) %}
{{ result }}
-> 0, 5, 10, 20, 25, 30
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.pop(-1) %}
{{ result }}
-> 0, 5, 10, 15, 20, 25
remove(item)
从列表中删除 item
(如果存在):
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.remove(20) %}
{{ result }}
-> 0, 5, 10, 15, 25, 30
我需要从列表中删除一些项目
"my_list_one": [
"item1",
"item2",
"item3"
] }
我需要删除包含字符串“2”的项目。结果,我需要 list as
"my_list_one": [
"item1",
"item3"
] }
我是怎么实现的?
@techraf answer 的更好变体:
{{ my_list_one | reject('search','2') | list }}
您也可以根据需要使用pop()
或remove()
。
pop(n)
删除列表的第 n 个元素(从 0 开始)。负 n 值从列表末尾开始计数。
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.pop(3) %}
{{ result }}
-> 0, 5, 10, 20, 25, 30
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.pop(-1) %}
{{ result }}
-> 0, 5, 10, 15, 20, 25
remove(item)
从列表中删除 item
(如果存在):
- debug:
msg: |
{% set result = [] %}
{% for i in range(0, 30, 5) %}
{% set _ = result.append(i) %}
{% endfor %}
{% set _ = result.remove(20) %}
{{ result }}
-> 0, 5, 10, 15, 25, 30