我正在尝试在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的属性,以便用逗号分隔基因?有没有简单的方法将“和”字放在最后一个基因之前?
答案 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")
)一起加入,然后将其与最后一项一起加入。