簡體   English   中英

Python:按第一個元素對元素列表進行排序,但如果相等則按原始索引排序

[英]Python: Sort list of elements by first element, but if equal sort by original index

我有一個看起來像這樣的元素列表:

['3,5', '5,8', '1,8', '6,9', '1,10', '1,2', '4,7', '9,4']

我想按每個元素的第一個值對其進行排序,但如果兩個元素具有相同的值,那么我想按原始索引對其進行排序。 在此示例中,我希望 '1,8' 在 '1,10' 之前和 '1,10' 在 '1,2' 之前,因此排序列表如下所示:

['1,8', '1,10', '1,2', '3,5', '4,7', '5,8', '6,9', '9,4']

我怎樣才能做到這一點?

Python 的排序函數是穩定的,這意味着如果排序鍵相同,它將具有您想要的行為。 所以你可以只做一個帶第一個數字的鍵,忽略 rest。 將 substring 傳遞到","並使其成為 integer 的一種方法:

l = ['3,5', '5,8', '1,8', '6,9', '1,10', '1,2', '4,7', '9,4']

sorted(l, key=lambda s: int(s[:s.index(',')]))
# ['1,8', '1,10', '1,2', '3,5', '4,7', '5,8', '6,9', '9,4']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM