![](/img/trans.png)
[英]Python - Sort a list of lists but only keep last item in each sublist
[英]How to sort a list of lists by an item of the sublist that is a float
我正在尝试按浮动的 1 个项目对列表列表进行排序。 问题是,使用 sort(list, itemgetter(n)) 将浮点数排序为字符串,而 output 不是我所期望的。
list1 = [('1','1',"9999"),('1','1',"9998"),('1','1',"9998.777"),('1','1',"9995111"),('1','1',"110000")]
list2 = sorted(list2, key=itemgetter(2))
print(list2)
实际结果:
[('1', '1', '110000'), ('1', '1', '9995111'), ('1', '1', '9998'), ('1', '1', '9998.777'), ('1', '1', '9999')]
预期结果:
[('1', '1', '9998'), ('1', '1', '9998.777'), ('1', '1', '9999'),('1', '1', '110000'),('1', '1', '9995111')]
它将它们排序为字符串,因为它们是字符串。 itemgetter
按原样返回x[2]
。 你想要的是一个 function ,它接受 ax 并返回float(x[2])
。 所以,只需使用key= lambda x: float(x[2])
如果要进行浮点转换,可以 map 一个 function 就可以了:
list2 = list(map(lambda x: (x[0], x[1], float(x[2])), list1))
然后您的行list2 = sorted(list1, key=itemgetter(2))
将按预期工作。
否则,您可以使用sorted(list1, key=lambda x: float(x[2]))
作为评论中提到的 Rakesh,按其上的第二个元素转换浮点类型进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.