python list 多个关键字排序

问题:

python对list排序可以用L.sort(key = )设置一个参照给key参数,以其为标准进行排序。如果对一个多维序列排序,势必未遇到排序的关键字的值有相等的情况下,想以以第二关键字进行排序,如[(1,3,5),(1,4,3)],假如以[0]为关键字值都为一,当[0]都是1的时候,以[2]为关键字,即得出[(1,4,3),(1,3,5)]。

解决:

l=[(1,4,3),(1,3,5),(1,2,2)]
l.sort(key = lambda x: (x[0],x[2]))
print(l)
#output:
#[(1, 2, 2), (1, 4, 3), (1, 3, 5)]

讨论:

以前以为用cmp参数,python3已经禁用cmp,其实给key一个tuple【1】就可以了很简单就可解决,这样sort就以(第一关键字,第二关键字)的顺序进行排序了,如果想加入更多关键字,那就只管往tuple里加就行了。

Leave a Reply

Your email address will not be published. Required fields are marked *