我有一个包含多个列的表。我想要做的是编写一个jinja2模板,它将获取两列的名称并使用它们来获取每列的单元格值。然后它需要循环遍历这些对并应用一个简单的数学公式(即cell1 * cell2
),我需要由模板呈现的唯一值是结果值。
列具有name
和cells
属性。
这似乎应该很容易实现,但我遇到了问题。这可能是由于我不熟悉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组件,并在后端进行评估。
答案 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>
,a
,b
,...),我们希望将&#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