Ansible dicts 列表 - 在列表过滤器后访问键

And*_*dyC 6 dictionary jinja2 ansible

以这个剧本 YAML:

---
- hosts: localhost
  become: false
  vars:
    list_of_dicts:
      - { key1: "cccc", key2: "dddd" }
      - { key1: "aaaa", key2: "bbbb" }
  tasks:
    - name: debug list
      debug:
        msg: "{{ list_of_dicts|sort(attribute='key1')|first }}"
Run Code Online (Sandbox Code Playgroud)

dict作为过滤器链的结果,我如何访问密钥?过滤器产生一个dict看起来像这样的:

ok: [localhost] => {
    "msg": {
        "key1": "aaaa",
        "key2": "bbbb"
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想key2在过滤器链中访问- 我描绘了类似的东西,...|first.key2但推断first它不是一个对象(并且同样失败first['key2']

Kon*_*rov 8

这肯定是重复的,但我找不到相应的答案。我希望 SO 有一个更好的搜索引擎。

您可以在 Jinja2 中对表达式进行分组,如下所示:

(list_of_dicts|sort(attribute='key1')|first).key2
Run Code Online (Sandbox Code Playgroud)