繁体   English   中英

如何按浮动子列表的项目对列表列表进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM