在 python (web2py) 上为所有具有相似名称的变量创建一个循环给我未排序的值

Creating a loop for all variables with a similar name on python (web2py) gives me the values unsorted

使用此代码:

form_vars = dict(request.vars)
torres = [v for k, v in form_vars.items() if k.startswith('torre_')]

我得到一个包含所有以“torre_”开头的表单数据的列表,问题始于这样一个事实,而不是像这样创建一个列表:

#lets assume these are the values
 torre_1 = 1
 torre_2 = 2
 torre_3 = 3
 torre_4 = 4
# Instead of these
 torres = [1,2,3,4]
# I get these
 torres = [4,2,1,3]

我需要这些值作为数学公式,需要值的位置有一个因数。

 Mp = 0
 cantTorres = len(torres)
    for i in range(1, cantTorres):
       Mp += ((torres[i]*cantTorres)*cantTorres)/cantTorres*i
       i = i+1

有什么建议吗?

如果你只得到列表中的值,你就会丢失排序信息 在字典的键中。

因此您必须将值与列表中的键放在一起。

form_vars = dict(request.vars)
torres = [(k,v) for k,v in form_vars.items() if k.startswith('torre_'))

现在托雷斯的形式是 [(key1, value1), ... ]

现在您可以使用键对列表进行排序。

torres.sort(key=lambda x:x[0])

最后取出钥匙。

torre = [x[1] for x in torre]