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