程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Python中實現多屬性排序

Python中實現多屬性排序

編輯:Python

我們有一組記錄:

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!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved