我在Ansible中将以下字典设置为变量:
my_users:
name1:
value: some_value1
id: 99
type: some_type1
name2:
value: some_value2
id: 55
type: some_type2
name3:
value: some_value3
id: 101
type: some_type3
我想根据id
字段对其进行排序,然后再次打印。我尝试使用dictsort
并选择按值选项,但找不到指定要排序的特定值的方法。
tasks:
- debug:
msg: "{{ item }}"
with_items: "{{ my_users | dictsort(false, 'value') }}"
答案 0 :(得分:0)
Jinja2 dictsort
适用于字典(平面),并允许按键或值进行排序(这就是'value'
参数的含义―它是一个开关,而不是嵌套键的名称字典)。
您可以使用Python编写一个简单的过滤器插件:
#!/usr/bin/python
class FilterModule(object):
def filters(self):
return {
'sortbysubkey': self.sortbysubkey,
}
def sortbysubkey(self, dict_to_sort, sorting_key):
return sorted(dict_to_sort.items(), key=lambda x: x[1][sorting_key])