使用jinja分隔字典列表的逗号

时间:2014-09-29 11:40:52

标签: python dictionary jinja2

我正在尝试在python中的字典数组中的项列表之间添加逗号(使用jinja)。

我正在做以下事情:

@{@ for row in data.results -@}@
@{{@ row.gene|join(',', attribute='gene')@}}@
@{@ endfor @}@}

但是,每个基因都属于python中字典数组中的字典,例如

'results': [
         {'aminoacidic': u'p.Leu110Val',
          'criterium': u'1000',
          'ensembl': u'rs2301149',
          'gene': u'KCNMB1',
          'hgmd': u'CM078442',
          'nucleotidic': u'c.328C>G'},
         {'aminoacidic': None,
          'criterium': u'1000',
          'ensembl': u'rs13306673',
          'gene': u'SLC12A3',
          'hgmd': None,
          'nucleotidic': u'c.283-54T>C'},
          {'aminoacidic': None,
          'criterium': u'3000',
          'ensembl': u'rs72811418',
          'gene': u'CYBA',
          'hgmd': u'CR073543',
          'nucleotidic': u'c.*-675A>T'}
         ]

我想得到以下输出:

         blabla in the gene list KCNMB1, SLC12A3, and CYBA. 

如何在jinja中正确添加integer.gene的属性,以便用逗号分隔基因?有没有简单的方法将“和”字放在最后一个基因之前?

1 个答案:

答案 0 :(得分:2)

您可以使用loop变量:

{% for result in results %}
  {% if not loop.last %}{{ result.gene }}, {% else %}and {{ result.gene }}.{% endif %}
{% endfor %}

或者,将2个连接拼凑在一起:

{{ (results[:results|length-1]|join(", ",attribute="gene"), (results|last).gene | join("and ") }}

在这种情况下,我们在没有最后一项的情况下获取结果,并将其与逗号(results[:results|length-1]|join(", ",attribute="gene"))一起加入,然后将其与最后一项一起加入。