在 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]
使用此代码:
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]