當我使用此函式通過數值降序對元組串列進行排序時:
data.sort(key=lambda tup: tup[1], reverse=True)
我的串列中有以下元組順序:
data = [("a", 8001),
("b", 8000),
("c", 8),
("d", 10)]
它按字母而不是數字排序。8 > 10 因為 8 大于 10 的第一個字母 1。
如何按數字降序對元組串列進行排序?
uj5u.com熱心網友回復:
原始代碼作業正常
>>> data = [("a", 8001),
... ("b", 8000),
... ("c", 8),
... ("d", 10)]
>>>
>>> data
[('a', 8001), ('b', 8000), ('c', 8), ('d', 10)]
>>> data.sort(key=lambda tup: tup[1], reverse=True)
>>>
>>> data
[('a', 8001), ('b', 8000), ('d', 10), ('c', 8)]
uj5u.com熱心網友回復:
嘗試:
sorted(data, key=lambda x: -int(x[1]))
輸出:
[('a', '8001'), ('b', '8000'), ('d', '10'), ('c', '8')]
其實你的初始代碼看起來不錯,你只需要轉換為int:
data.sort(key=lambda tup: int(tup[1]), reverse=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386506.html
下一篇:在一行中給出一串數字,用空格分隔
