我有一个包含元组列表的列表,我想按第二个元素对这些子列表进行排序,第二个元素是介于0.0和10.0之间的数字。
for i in range(0, len(data)):
data[i] = sorted(data[i], key=itemgetter(1), reverse=True)
它按照我的预期进行了排序,但是没有一个元素是:
<type 'list'>: [('String1', '7.5', '', '', None), ('String2', '7.5', '', '', None), ('String3', '10.0', '', '', None)]
即使该列表的前面应该有10.0元素,它仍然保持上面的样子。
为什么不对那条线进行排序,而是对所有其他行进行排序?是因为它有7.5两次吗?
您需要将值排序float
为str
>>> sorted(data[i], key=lambda j: float(j[1]), reverse=True)
[('String3', '10.0', '', '', None), ('String1', '7.5', '', '', None), ('String2', '7.5', '', '', None)]
否则,如您所写,您正在比较字符串
'7.5' > '10.0'
这是字典比较
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句