编写一个带有两个列名称的模板,并将一个简单的等式应用于值

时间:2017-03-28 10:53:42

标签: python python-2.7 jinja2

我有一个包含多个列的表。我想要做的是编写一个jinja2模板,它将获取两列的名称并使用它们来获取每列的单元格值。然后它需要循环遍历这些对并应用一个简单的数学公式(即cell1 * cell2),我需要由模板呈现的唯一值是结果值。

列具有namecells属性。

这似乎应该很容易实现,但我遇到了问题。这可能是由于我不熟悉Python,因为我来自JS背景,并且最近才开始使用Python。

非常感谢任何有关此问题的帮助。

感谢您的时间。

更新:

Column A:

{
  name: 'Column 1', 
  cells: [
    {value: 1000}, 
    {value: 1000}, 
    {value: 1000}
  ]
}

Column B:

{
  name: 'Column 5', 
  cells: [
    {value: 11}, 
    {value: 39}, 
    {value: 50}
  ]
}

此模板应用于表中的值,该表是React组件,并在后端进行评估。

2 个答案:

答案 0 :(得分:0)

如果在python中完成,这就是你需要的:

a = {
  'name': 'Column 1',
  'cells': [
    {'value': 1}, 
    {'value': 2}, 
    {'value': 3}
  ]
}

print a['cells'][0]['value']*a['cells'][1]['value']

答案 1 :(得分:0)

根据我们的对话,听起来不应该在模板中完成繁重的工作,而是在Python本身。我们假设每列都有一个字典(<div class="button" ngf-select="upload($file)">Upload on file select</div> ab,...),我们希望将&#34;的所有单元格值相乘。第1栏和第34栏;使用&#34;第2列&#34;:

c

然后,您可以将a = { 'name': 'Column 1', 'cells': [ {'value': 1}, {'value': 2}, {'value': 3} ] } b = { 'name': 'Column 2', 'cells': [ {'value': 4}, {'value': 5}, {'value': 6} ] } # assemble the dictionaries into a list dicts = [a,b] # create a new dictionary mapping column names --> cell values data = {x['name']:x['cells'] for x in dicts} # {'Column 1': [{'value': 1}, {'value': 2}, {'value': 3}], 'Column 2': [{'value': 4}, {'value': 5}, {'value': 6}]} col1 = 'Column 1' col2 = 'Column 2' col3 = [] # zip the columns of interest for el in zip(data[col1],data[col2]): # extract the cell values for each zipped pair values = [x['value'] for x in el] # do the multiplication c = values[0] for x in values[1:]: c *= x col3.append(c) 直接传递给模板:

col3

修改

如果template.render(data=col3) # col3 = [4, 10, 18] 是具有唯一键的词典列表,则可以执行以下操作:

cells