天天看點

python3利用sort對多字段排序

  • 本文主要解多字段(存在主序和次序)的排序問題,由于python3的sort沒有cmp參數,可能會突然不知所措
  • csdn還有通過将多字段組合成元組的方式來實作多字段排序,見本文,不過個人感覺可能沒有本文中的方法直覺
  • 主要原理是python的sort是穩定排序,是以可以先根據次要的序去排,再排主要的序,因為在排主序時若發生相等的情況,元素的順序會保持在原先序列中的位序關系(也即維持了次要的序)
  • 示例代碼如下
    arr = [(1,2,3), (1,2,1), (1,2,6), (1,3,1), (2,3,1)]
    # 比如排序的要求是先排元組的第0個元素(升序)
    # 第0元素相等時再排第1個元素(升序)
    # 第1個元素還相等時再排第2個元素(升序)
    arr.sort(key=lambda x:x[2])
    arr.sort(key=lambda x:x[1]) 
    arr.sort(key=lambda x:x[0])
    print(arr)