You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jinja2提取嵌套列表中的snapshot_id属性

使用Jinja2提取嵌套列表中的snapshot_id属性

问题场景

你有如下嵌套列表结构的JSON数据,需要提取所有元素中的snapshot_id属性:

[
   [
      {
         "device_name":"/dev/sda1",
         "ebs":{
            "delete_on_termination":true,
            "snapshot_id":"snap-0456a553a80e6826a",
            "volume_size":30,
            "volume_type":"gp2",
            "encrypted":true
         }
      }
   ],
   [
      {
         "device_name":"/dev/sda1",
         "ebs":{
            "delete_on_termination":true,
            "snapshot_id":"snap-001c3143228559631",
            "volume_size":30,
            "volume_type":"gp2",
            "encrypted":true
         }
      }
   ],
   [
      {
         "device_name":"/dev/sda1",
         "ebs":{
            "delete_on_termination":true,
            "snapshot_id":"snap-040d15cdb5d8aaf33",
            "volume_size":30,
            "volume_type":"gp2",
            "encrypted":true
         }
      }
   ]
]

实现方法

由于数据是两层嵌套列表(外层列表的每个元素都是仅包含一个字典的子列表),可以通过以下两种方式提取目标属性:

1. 嵌套循环输出

直接通过两层for循环遍历到最内层的字典,提取snapshot_id:

{% for outer_list in input_data %}
  {% for item in outer_list %}
    {{ item.ebs.snapshot_id }}
  {% endfor %}
{% endfor %}

2. 列表推导式收集结果

如果需要将所有snapshot_id整理成一个列表,可以使用Jinja2的列表推导式:

{# 先收集所有snapshot_id到变量中 #}
{% set snapshot_ids = [item.ebs.snapshot_id for outer_list in input_data for item in outer_list] %}

{# 输出结果列表 #}
{{ snapshot_ids }}

执行后会得到结果:

['snap-0456a553a80e6826a', 'snap-001c3143228559631', 'snap-040d15cdb5d8aaf33']

内容的提问来源于stack exchange,提问作者Sameer Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:13:15