如何對一個元素是列表的列表進行排序,排序規則是:首先按長度排序,其次按列表的字典序進行排序html
一個例子:python
list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]
排序後爲list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
微信
另外一個例子:函數
list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]
排序後爲list2 = [[2, 4, 5], [2, 5, 4], [4, 5, 2]]
spa
使用對元組排序的技巧,咱們能夠調用sorted
函數時候指定key爲lambda k: (len(k), k)
code
>>> list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]] >>> list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]] >>> print(sorted(list1, key=lambda k: (len(k), k))) [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]] >>> print(sorted(list2, key=lambda k: (len(k), k))) [[2, 4, 5], [2, 5, 4], [4, 5, 2]]
根據Sorting HOW TO瞭解到htm
This idiom works because tuples are compared lexicographically; the first items are compared; if they are the same then the second items are compared, and so on.
元組的排序是根據字典序的,也就是首先按第一個元素排序,若是第一個元素相等,再按第二個元素排序排序
而這裏咱們的lambda k: (len(k), k)
,第一個元素就是k的長度,第二個元素是k自己rem
那麼也就是問題所說的首先按長度排序,其次按列表的字典序進行排序get
這裏只是按兩個關鍵字排序,當按多個關鍵字排序時,也一樣可使用元組來簡化代碼
Stack Overflow
歡迎關注個人微信公衆號:python每日一練