keep_keys

Use the filter community.general.keep_keys if you have a list of dictionaries and want to keep certain keys only.

Note

The output of the examples in this section use the YAML callback plugin. Quoting: “Ansible output that can be quite a bit easier to read than the default JSON formatting.” See the documentation for the community.general.yaml callback plugin.

Let us use the below list in the following examples:

input:
  - k0_x0: A0
    k1_x1: B0
    k2_x2: [C0]
    k3_x3: foo
  - k0_x0: A1
    k1_x1: B1
    k2_x2: [C1]
    k3_x3: bar
  • By default, match keys that equal any of the items in the target.

target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.keep_keys(target=target) }}"

gives

result:
  - {k0_x0: A0, k1_x1: B0}
  - {k0_x0: A1, k1_x1: B1}

New in version 9.1.0.

  • The results of the below examples 1-5 are all the same:

result:
  - {k0_x0: A0, k1_x1: B0}
  - {k0_x0: A1, k1_x1: B1}
  1. Match keys that equal any of the items in the target.

mp: equal
target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys that start with any of the items in the target.

mp: starts_with
target: ['k0', 'k1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys that end with any of the items in target.

mp: ends_with
target: ['x0', 'x1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys by the regex.

mp: regex
target: ['^.*[01]_x.*$']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys by the regex.

mp: regex
target: ^.*[01]_x.*$
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  • The results of the below examples 6-9 are all the same:

result:
  - {k0_x0: A0}
  - {k0_x0: A1}
  1. Match keys that equal the target.

mp: equal
target: k0_x0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys that start with the target.

mp: starts_with
target: k0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys that end with the target.

mp: ends_with
target: x0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
  1. Match keys by the regex.

mp: regex
target: ^.*0_x.*$
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"