我們有一組記錄:
list_records = ( (department, name, salary), (department, name, salary), ... (department, name, salary) )
然後我們想進行類似 MS – Excel 裡的 “then sort by” 中的功能一樣先基於department排序,然後再在部門內按照salary排序。
其他編程語言可能相對復雜,我這裡寫出一個用Python實現的最簡方法(也許有比這個還短的,來挑戰吧)
list_records.sort( key = lambda l: (l[0], l[2]) )
這個就是函數是編程的好處,可以無中生有的構造出一個沒有名字的inline函數。假設我們有另外一個dictionary_age 是保存的 { name: ages }, 我們還可以簡單的實現基於外部屬性進行排序。例如,如果我們想先按照部門排序,然後在部門裡按照年齡排序,我們可以寫:
list_record.sort( key = lambda l:( l[0], dictionary_age(l[1]) ) )
如果需要降序排列,可以設置 revserse = True; 如果想基於兩個屬性,一個升序,一個降序,可以試試將其中一個構造一個外部規則,然後如同上例子中的dictionary_age一樣傳遞進去。
Done!