Skip to content

Jinja2 notes

tips

  • string2int
    {% set _year = _year | int %}
    
  • sort
    {% for _d in _data|sort(attribute='symbol', reverse = True) -%}
    
  • dict update
    {% set _=_map.update({_key: did}) %}
    
  • list append
    {% set _=_range.append(_year) %}
    
  • loop
    {% for _eid, _ename in _ent.items() %}
    {% endfor %}
    
  • ifelse
    {% if v.get("name") not in _element %}
    {% endif %}
    

example

{% set _ent = d.entity -%}
{% set _dp = d.dataItem -%}
{% set _v = d.value -%}
{% set _cfg = d.option -%}
{# loop元数据,构建dict #}
{% set _map = {} %}
{% set _range = [] -%}
{% set _element = [] %}

{% set _dimension = _cfg.get("dimension") -%}

{# 获取年份排序数组 #}

{% for did, v in _dp.items() -%}
  {% set _year = v.get("year") %}
  {% set _key = (v.get("name"), v.get("year")) %}
  {% set _=_map.update({_key: did}) %}
  {% if _year is not none %}
    {% set _year = _year | int %}
    {% if _year not in _range %}
      {% set _=_range.append(_year) %}
    {% endif %}
  {% endif %}
  {% if v.get("name") not in _element %}
    {% set _=_element.append(v.get("name")) %}
  {% endif %}

{% endfor -%}

{# 遍历实体 #}
{% set entities=[] %}
{% for _eid, _ename in _ent.items() %}
  {% set _eitem = {"items": [], "name": _ename} %}
  {% for _ele in _element %}
    {% set _dp = {"name": _ele, "data": []} %}
    {% for _year in _range|sort() %}
      {% set _filter_dp=_map.get((_ele, _year|string), "") %}
      {% set _value = _v.get(_eid).get(_filter_dp) %}
      {% set _ = _dp["data"].append(_value)%}
    {% endfor %}
    {% set _= _eitem["items"].append(_dp) %}
  {% endfor %}
  {% set _= entities.append(_eitem) %}
{% endfor %}


{
    "dimension": {{_dimension | tojson}},
    "entities": {{entities | tojson}},
    "range": {{_range | tojson}},
    "config": {{_cfg | tojson}}
}