ansible - 根据键过滤字典
问题描述
我有一个这样的字典
{"product_1": [
"account1",
"account2"
],
"product_2": [
"account1",
"account2"
],
...
"product_10": [
"account1",
"account2"
]}
如何根据键过滤这个字典?
解决方案
有特定的 jinja2 过滤器:selectattr
和rejectattr
.
但是这些在字典列表上工作,而不是在字典本身上。您将不得不使用dict2items
并items2dict
解决这个问题。
以下是一些示例用法:
# 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 }}"
检查上述文档和其他过滤器,以全面了解所有可能性。
推荐阅读
- c++ - 如何安全地复制具有 `std::variant` 成员的类?
- python - 我可以加快 numba 中的 while 循环吗?
- javascript - 如何从函数中修改 module.exports?
- arrays - Swift - 如何根据匹配值将两个无序的结构数组组合成一个新对象数组?
- r - 如何根据数据创建区域并查找区域内移动的距离?
- c - 跳过部分字符串 sscanf 使用“on”
- excel - 当两个工作表中的单元格匹配且单独的特定值时,如何更改单元格值?
- c# - C# Parallel.For 但使用 double 作为参数
- reactjs - React/TypeScript/Redux/Thunk reducer 被触发,但 redux 存储中的状态未更新
- javascript - 如何让我使用的 clicked() 函数起作用?