如何在python中对元组列表进行排序?

问题描述:

你如何在python如何在python中对元组列表进行排序?

排序元组的列表清单,例如:请注意,元组的最后一个要素是相同的

a = [ 

[(1, 5, 6), (2, 2, 6), (3, 6, 6)], 
[(6, 1, 3), (5, 7, 3), (4, 1, 3)], 
[(5, 7, 2), (7, 5, 2), (6, 3, 2)], 
[(9, 1, 7), (1, 5, 7), (2, 6, 7)] 

] 

我想用的元组作为最后一个元素进行排序钥匙。因此,预期的结果是

[ 

[(5, 7, 2), (7, 5, 2), (6, 3, 2)], 
[(6, 1, 3), (5, 7, 3), (4, 1, 3)], 
[(1, 5, 6), (2, 2, 6), (3, 6, 6)], 
[(9, 1, 7), (1, 5, 7), (2, 6, 7)] 

] 
+0

元组的最后一个元素?第一个?最后一个? – Felipe 2013-04-25 13:51:50

In [27]: a = [ 
    ....: 
    ....: [(1, 5, 6), (2, 2, 6), (3, 6, 6)], 
    ....: [(6, 1, 3), (5, 7, 3), (4, 1, 3)], 
    ....: [(5, 7, 2), (7, 5, 2), (6, 3, 2)], 
    ....: [(9, 1, 7), (1, 5, 7), (2, 6, 7)] 
    ....: 
    ....: ] 
           # any tuple (first will do), last element 
In [28]: a.sort(key=lambda l: l[0][-1]) 

In [29]: a 
Out[29]: 
[[(5, 7, 2), (7, 5, 2), (6, 3, 2)], 
[(6, 1, 3), (5, 7, 3), (4, 1, 3)], 
[(1, 5, 6), (2, 2, 6), (3, 6, 6)], 
[(9, 1, 7), (1, 5, 7), (2, 6, 7)]] 

使用key参数进行排序和lambda功能

a.sort(key=lambda x: x[-1][-1]). # sorts in-place 
sorted(a, key=lambda x: x[-1][-1]). # new sorted list 

编辑:改变的第一个索引取决于你想看看什么元组比较。即,使用x[0][-1]基于第一个元组进行比较