根据条件对列表进行排序

Sort a list based on a condition

我以一个字符串作为输入例子:

ansible-playbook foo.yml -i bar.ini -e flags=valuea,valueb

我有一个字典作为变量

sample_dict: {
  1: ["valuea"],
  2: ["valueb", "valuec"]
}

我想根据 sample_dict 中的键对 flagss.split(',') 进行排序,所以如果我的标志像 flags=valuec,valuea,valueb 一样以随机顺序传递,它会根据我的 sample_dict 重新排列结构

让我改一下你的问题。给定字典

sample_dict:
  1: [C]
  2: [B, X]
  3: [A]

根据字典的值对 comma-separated 字符串进行排序。例如,给定字符串 flags='X,C',预期结果为

result:
  - C
  - X

例如,下面的任务完成了工作

    - set_fact:
        result: "{{ result|d([]) + [item] }}"
      loop: "{{ sample_vals }}"
      when: item in _flags
      vars:
        _flags: "{{ flags.split(',') }}"
        sample_vals: "{{ sample_dict.values()|flatten }}"

这是你想要的吗?