根据键过滤字典

mic*_*hai 2 ansible

我有一个这样的字典

{"product_1": [
        "account1",
        "account2"
    ],
"product_2": [
        "account1",
        "account2"
    ],
...
"product_10": [
        "account1",
        "account2"
    ]}
Run Code Online (Sandbox Code Playgroud)

如何根据键过滤这个字典?

Zei*_*tor 5

有专门的 jinja2 过滤器:selectattrrejectattr

但它们适用于字典列表,而不是字典本身。您将必须使用dict2itemsitems2dict解决这个问题。

以下是一些用法示例:

# Values are dicts, select only items with specific attribute defined.
result: "{{ my_dict | dict2items | selectattr('value.my_attribute', 'defined')
  | list | items2dict }}"

# Values are lists (as in your example), check for an existing item value.
result: "{{ my_dict | dict2items | selectattr('value', 'contains', 'some item')
  | list | items2dict }}"

# Values are dict. Reject elements when attributes has a specific value.
result: "{{ my_dict | dict2items | rejectattr('value.my_attribute', '==', 'Does not apply')
  | list | items2dict }}"
Run Code Online (Sandbox Code Playgroud)

检查上述文档和其余过滤,以全面了解所有可能性。