[英]Python . How to sort elements of sub-list if second elements are equal sort the sub-lists by first element
[英]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.