Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 根据Ansible中的特定值对dict进行排序_Sorting_Ansible_Jinja2 - Fatal编程技术网

Sorting 根据Ansible中的特定值对dict进行排序

Sorting 根据Ansible中的特定值对dict进行排序,sorting,ansible,jinja2,Sorting,Ansible,Jinja2,我在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字段对其进行排序,然后再次打印。我曾

我在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') }}"
适用于字典(平面),允许按键或值进行排序(这就是
'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])
最终代码:
msg:{{{my_users}sortbysubkey('id')}}