Python 访问单个列表值的更好解决方案
我希望能够访问所有值在我的列表中(大约有70个值在列表中),以便我可以将它们放在我的网站上的任何位置。 但是,我发现我的解决方案看起来非常丑陋: 我的df:Python 访问单个列表值的更好解决方案,python,flask,Python,Flask,我希望能够访问所有值在我的列表中(大约有70个值在列表中),以便我可以将它们放在我的网站上的任何位置。 但是,我发现我的解决方案看起来非常丑陋: 我的df: df= A B(m) C(cm) D(m) house 50 50 100 bedroom 80 50 600 bed 20
df=
A B(m) C(cm) D(m)
house 50 50 100
bedroom 80 50 600
bed 20 60 500
@app.route('/calculate', methods=['POST'])
def calculate():
my_numbers = []
my_column = []
inpt = request.form['inpt']
inpt2 = request.form['inpt2']
output = False
for text in df['A']:
if text == inpt:
give_text = df[df['A'] == inpt]
give_text = give_text.drop(['A'], axis = 1)
# Here we start to calculate with inpt2
for column in give_text:
column_edit = give_text[column]
my_columns.append(column)
column_edit = float(column_edit) * float(inpt2)
if '(m)' in column:
column_edit = column_edit + 'meter'
my_numbers.append(column_edit)
elif 'cm' in column:
column_edit= column_edit + 'centimeter'
my_numbers.append(column_edit)
return render_template('calculate.html',my_numbers_0 = my_numbers[0], my_column_0 =
my_column[0],
my_numbers_1 = my_numbers[1], my_column_1 = my_column[1],
my_numbers_2 = my_numbers[2], my_column_2 = my_column[2],
my_numbers_3 = my_numbers[3], my_column_3 = my_column[3],
my_numbers_4 = my_numbers[4], my_column_4 = my_column[4],
my_numbers_5 = my_numbers[5], my_column_5 = my_column[5],
my_numbers_6 = my_numbers[6], my_column_6 = my_column[6],
my_numbers_7 = my_numbers[7], my_column_7 = my_column[7],
my_numbers_8 = my_numbers[8], my_column_8 = my_column[8],
my_numbers_9 = my_numbers[9], my_column_9 = my_column[9],
my_numbers_10 = my_numbers[10], my_column_10 = my_column[10],
my_numbers_11 = my_numbers[11], my_column_11 = my_column[11],
inpt=inpt)
在我的html中,它看起来像这样。。(我缩短了列表;这些不是全部值)
和html格式:
<p>{{ my_column[1] }}</p>
<p>{{ my_numbers[1] }}</p>
{{my_column[1]}
{{my_number[1]}
使用简单但功能强大的jinja2引擎,您可以轻松做到这一点。试试这样的
return render\u template('calculate.html',items=zip(我的\u列,我的\u编号)
然后在模板中
{%为列,项目数为%}
{{column}{{number}
{%endfor%}
此外,在有意义的地方尽量使用复数,例如,
my_columns
而不是my_column
,因为有多个列。如何使用Jinja模板,例如{%for i in mylist%}
循环根据列表的内容动态自动填充每个
标记?然后,只有列表会返回到HTML模板。类似于。{my_column%}{i[10]}{%endfor%}
如果我尝试此操作,那么“Hello”=>“H”“e”“l”“l”“o”并不是我想要达到的效果。在Jinja中,您可以这样做来迭代列表而不是字符串:{%如果var是iterable而var不是string%}
。请为变量使用更有意义的名称,这将使代码更加清晰。此外,您发送的变量名称似乎不存在:my_numbers\u 0,my_column\u 0。inpt和inpt2之间的区别是什么?很难区分变量名称=存在大量错误。这段代码很难理解。我想但是当我尝试使用jinja时,会显示单个字母,但是如何获得html中的每个列,以便可以单独使用它呢?{{column[10]}
,{{column[12]}
不起作用单独显示是什么意思?是否要显示一个列表,然后再显示第10项和第12项?如果有呢
return render_template('calculate.html',my_numbers = my_numbers, my_column =
my_column)
<p>{{ my_column[1] }}</p>
<p>{{ my_numbers[1] }}</p>