我有一個如下所示的串列:
串列 = ['8 4', '4 3', '15 8', '10 5', '']
我想按每對的第一個元素按降序對其進行排序。也就是說,我的輸出應該如下所示。
排序串列 = ['15 8', '8 4', '10 5', '4 3' '']
我如何實作這一目標?
uj5u.com熱心網友回復:
您可以使用str.split和使用每對的第一個元素。
lst = ['8 4', '4 3', '15 8', '10 5', '']
def key_sort(x):
try:
return int(x.split()[0]) # '8 4'.split() -> ['8', '4']
except IndexError:
# for handling empty string : `''`
return float('-inf')
lst.sort(key=key_sort, reverse = True)
print(lst)
輸出:
['15 8', '10 5', '8 4', '4 3', '']
uj5u.com熱心網友回復:
和
lst = ['8 4', '4 3', '15 8', '10 5', '']
嘗試:
sorted(lst, key=lambda x: int(x.split()[0]) if len(x) else float("-inf"), reverse = True)
輸出:
['15 8', '10 5', '8 4', '4 3', '']
uj5u.com熱心網友回復:
像這樣:(使用助手sort_key)
L = ['8 4', '4 3', '15 8', '10 5']
def sort_key(x):
tp = x.split()
return -(int(tp[0])) #, int(tp[1]) <--- updated based on feedback
>>>sorted(L, key=sort_key)
['15 8', '10 5', '8 4', '4 3']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514796.html
下一篇:根據出現的情況將專案插入串列
