簡體   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