使用sorted()
一個關鍵參數:
sorted(tuples, key=lambda t: t[-1])
你可以使用operator.itemgetter()
生成該關鍵功能:
from operator import itemgetter
sorted(tuples, key=itemgetter(-1))
無論採用哪種方式,元組都會在每個元組的最後一個條目上排序,只有。你也可以只扭轉包含元組進行排序倒數第二個值,如果最後的值相等:
sorted(tuples, key=lambda t: t[::-1])
演示:
>>> from operator import itemgetter
>>> tuples = [(1, 2), (3, 4, 1), (7, 5, 6, 9), (3,)]
>>> sorted(tuples, key=lambda t: t[-1])
[(3, 4, 1), (1, 2), (3,), (7, 5, 6, 9)]
>>> sorted(tuples, key=itemgetter(-1))
[(3, 4, 1), (1, 2), (3,), (7, 5, 6, 9)]
>>> sorted(tuples, key=lambda t: t[::-1])
[(3, 4, 1), (1, 2), (3,), (7, 5, 6, 9)]
>>> different_example = [(3, 4, 1), (1, 2), (3,), (7, 5, 2, 1)]
>>> sorted(different_example, key=itemgetter(-1))
[(3, 4, 1), (7, 5, 2, 1), (1, 2), (3,)]
>>> sorted(different_example, key=lambda t: t[::-1])
[(7, 5, 2, 1), (3, 4, 1), (1, 2), (3,)]
後者2個示例顯示瞭如何key=itemgetter(-1)
和key=lambda t: t[::-1]
不同;如果最後一個元素相等((3, 4, 1), (7, 5, 2, 1)
),則前者將元組保留爲其原始相對順序,後者將使用反向順序中的下一個值來確定順序((7, 5, 2, 1), (3, 4, 1)
,2
排序在4
之前)。
什麼是'insert_tup'? 'sort_tuples'當然不會嘗試對'tuples'進行排序,所以我不能說我驚訝於它不起作用。 – jonrsharpe
[按第二項(整數值)對元組列表進行排序](http://stackoverflow.com/questions/10695139/sort-a-list-of-tuples-by-2nd-item-integer-value ) – M4rtini